欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Google Android手機在美亮相
Google Android手機在美亮相 能否一舉成功仍是未知數
2008/09/24 - 手機&網(wǎng)通 - 陳穎芃/綜合外電 

據美聯(lián)社(AP)報導,醞釀已久的Google Android智能型手機終于要在23日于紐約亮相。市調機構Strategy Analytics預估,負責銷(xiāo)售的美國行動(dòng)電信業(yè)者T-Mobile在2008年能售出40萬(wàn)支Android手機,為Google取得美國智能型手機市場(chǎng)4%的市占率。

根據T-Mobile發(fā)表會(huì )邀請函中所述,這款由臺灣手機制造商宏達電(HTC)與Google合作開(kāi)發(fā)的手機名為T(mén)-mobile G1,將配備大型觸控式屏幕、全字母鍵盤(pán)、GPS衛星定位系統、Wi-Fi及3G網(wǎng)絡(luò )聯(lián)機功能。根據華爾街日報(WSJ)報導,這款手機將以定價(jià)199美元在美銷(xiāo)售,主要是考量到蘋(píng)果(Apple)iPhone先前在美國上市就是以同樣的價(jià)錢(qián)打入市場(chǎng),Google于是將此價(jià)格視為美國智能型手機消費者心中的價(jià)格標竿。

據富比士(Forbes)雜志報導,Google對跨足智能型手機界的首款作品寄以極高的期望,除了希望開(kāi)放原始碼的Android操作系統能從此改變手機操作系統趨勢之外,Google最終目的其實(shí)是預備以手機創(chuàng )造廣告收益的另一高峰。眾所皆知,Google在網(wǎng)搜界已是廣告大亨,單就2007年而言,Google的165億美元營(yíng)收幾乎都來(lái)自在線(xiàn)廣告。然而,稱(chēng)霸在線(xiàn)廣告市場(chǎng)的Google力求突破,已開(kāi)始找新的獲利管道。打從Google舍棄現有的手機操作系統,決意自行開(kāi)發(fā)Android平臺那一刻起,就已開(kāi)始為日后Android平臺套用在線(xiàn)廣告技術(shù)布局。

據市調機構eMarketer數據顯示,美國手機查找廣告至2009年營(yíng)收將達1.8億美元,而到了2012年,全球營(yíng)收將高達38億美元。Google雖洞察先機,但眼前若無(wú)法締造Android手機開(kāi)賣(mài)佳績(jì),一切夢(mèng)想將只是空談。盡管以開(kāi)放操作系統為號召,部分業(yè)界人士對于A(yíng)ndroid手機挑戰蘋(píng)果iPhone及RIM(Research in Motion)黑莓機(BlackBerry)的實(shí)力仍持保留態(tài)度。根據市調機構IDC調查顯示,目前美國智能型手機市場(chǎng)仍以RIM操作系統為主流。另?yè)姓{機構Gartner調查指出,全球市場(chǎng)則由Symbian操作系統領(lǐng)先,初來(lái)乍到的Android系統能打下多少市占仍不得而知。

另一方面,蘋(píng)果強烈的品牌形象及為數可觀(guān)的死忠愛(ài)用者,也凸顯Android手機除操作系統外并無(wú)獨特之處的缺陷?,F階段Google僅能仰賴(lài)合作伙伴T(mén)-Mobile從營(yíng)銷(xiāo)面下手,尋找攻占美國市場(chǎng)的利器。然而,據彭博信息(Bloomberg)報導,iPhone系列合作對象AT&T在美國已有7,290萬(wàn)用戶(hù),遠大于T-Mobile的3,150萬(wàn)用戶(hù),對Android手機而言仍是不小的威脅。美國市場(chǎng)種種的潛在競爭,在9月23日Android手機盛大上市后,真正的戰役才要揭開(kāi)序幕。



圖說(shuō):Google Android手機23日在美上市。T-Mobile

 

Android文檔閱讀01—Android是什么?

許可協(xié)議:creativecommons licenses

Android是什么?

Android是一個(gè)針對移動(dòng)設備的程序集, 其中包括一個(gè)操作系統, 一個(gè)中間件和一些關(guān)鍵性應用. 本文首先概覽了Android SDK提供的工具和APIs, 當您在使用Java語(yǔ)言來(lái)開(kāi)發(fā)Android平臺的應用時(shí)您會(huì )用到它們.

特性

  • 程序程序框架可重用及可復寫(xiě)組件組成
  • 針對移動(dòng)設備優(yōu)化過(guò)的Dalvik虛擬機
  • 整合瀏覽器, 該瀏覽器基于開(kāi)源的WebKit引擎開(kāi)發(fā)
  • 提供了優(yōu)化過(guò)得圖形系統, 該系統由一個(gè)自定義的2D圖形庫; 一個(gè)遵循OpenGL ES 1.0標準(硬件加速)的3D圖形庫組成
  • 使用SQLite來(lái)實(shí)現結構化數據的存儲
  • 媒體方面對一些通用的audio, video, 和圖片格式提供支持(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
  • GSM技術(shù)(依賴(lài)硬件)
  • 藍牙, EDGE, 3G和WiFi(依賴(lài)硬件)
  • Camera, GPS, 指南針, 和加速計 (依賴(lài)硬件)
  • 非常豐富的開(kāi)發(fā)環(huán)境, 包括一個(gè)設備模擬器, 調適工具, 內存和效率調優(yōu)工具和一個(gè)Eclipse的插件

Android的結構

下圖展示了Android 操作系統的主要組件結構. 每一部分都在下面的段落有詳細介紹

the major components of the Android operating system

應用程序

Android會(huì )附帶一些核心的應用程序, 包括一個(gè)email客戶(hù)端, 短信程序, 日歷, 地圖, 瀏覽器, 通訊錄等等. 所有的應用程序都是由Java語(yǔ)言完成的.

應用程序框架

Developers have full access to the same framework APIs used by the core applications. The application architecture is designed to simplify the reuse of components; any application can publish its capabilities and any other application may then make use of those capabilities (subject to security constraints enforced by the framework). This same mechanism allows components to be replaced by the user.

開(kāi)發(fā)人員可以跟那些核心應用一樣, 擁有訪(fǎng)問(wèn)框架APIs的全部權限. 應用的系結構設計簡(jiǎn)化了各組件之間的重用;任何應用都可以分發(fā)自己的組件, 任何應用也可以使用這些分發(fā)的組件(應用的使用方法需遵循框架的安全性約束)。這個(gè)機制對用戶(hù)來(lái)說(shuō)同樣適用, 他們也可以替換組件.

隱藏在每個(gè)應用后面的是一套服務(wù)和系統, 其中包括:

 

  • 一套表現豐富,擴展性很強的View, 通過(guò)這些View您可以創(chuàng )建包括list, grid, 文本框, 按鈕, 甚至一個(gè)嵌入瀏覽器的應用
  • Content Providers, 通過(guò)它可以在某個(gè)應用內訪(fǎng)問(wèn)其他應用的數據(例如通訊錄), 或者共享自己的數據
  • Resource Manager, 提供對靜態(tài)資源的訪(fǎng)問(wèn)能力, 例如國際化文本和layout文件
  • Notification Manager, 通過(guò)該機制, 所有的應用都可以在狀態(tài)欄顯示自己的提醒信息
  • Activity Manager, 用于管理應用的生命周期, 并且提供了通用的向后導航功能


預想了解更多并且對一個(gè)應用有一個(gè)整體的了解, 請您看編寫(xiě)一個(gè)Android應用

Android 包含一套C/C++庫, 被用于A(yíng)ndroid 系統中的各種組件中. 這些功能通過(guò)Android 應用框架展現給開(kāi)發(fā)人員. 下面列出一些核心庫:

  • System C library - 實(shí)現了BSD-derived 的標準C系統庫(libc), 用于嵌入式的基于Linux的設備
  • Media Libraries - 基于PacketVideo的 OpenCORE; 該庫提供了對許多流行的音頻和視頻格式的播放回放和錄制功能, 同樣包括靜態(tài)圖片文件, 包括MPEG4, H.264, MP3, AAC, AMR, JPG, 和 PNG 等
  • Surface Manager - 用于管理不同應用對圖形顯示子系統和2D和3D圖形層的訪(fǎng)問(wèn)
  • LibWebCore - 一個(gè)時(shí)尚的web瀏覽器引擎, 為Android瀏覽器和內嵌的web view提供實(shí)現
  • SGL - 隱藏的2D圖形引擎
  • 3D libraries - 基于OpenGL ES 1.0 APIs實(shí)現的庫; 該庫用于3D圖形加速或提供高優(yōu)化的3D軟件光柵器
  • FreeType - 位圖和向量模式的字體繪制
  • SQLite - 一個(gè)強大的, 輕量的關(guān)系型數據庫引擎, 用于所有的應用

Android 運行時(shí)

Android包含一組核心庫, 提供了Java語(yǔ)言核心庫內的大部分功能.


每一個(gè)Android應用運行在自己的進(jìn)程里, 用該應用自己的Dalvik 虛擬機實(shí)例. Dalvik 可以讓一個(gè)設備高效的運行很多個(gè)VM. Dalvik 虛擬機執行Dalvik Executable (.dex)格式的文件, 該格式的文件經(jīng)過(guò)優(yōu)化 占用很小的內存. 該虛擬機是基于存儲器的, 運行經(jīng)過(guò)Java語(yǔ)言編譯器的類(lèi), 這些類(lèi)通過(guò)"dx"工具被轉換成.dex格式.


Dalvik 虛擬機依賴(lài)Linux kernel 來(lái)實(shí)現一些潛在功能, 例如線(xiàn)程和底層內存管理.

Linux Kernel

Android基于Linux version 2.6內核來(lái)提供系統的核心服務(wù), 例如安全機制, 內存管理, 進(jìn)程管理, 網(wǎng)絡(luò )堆棧和驅動(dòng)模塊. 該內核還扮演著(zhù)一個(gè)虛擬的中間層, 該層介于硬件和其余的軟件堆棧.

  • 15ce8e18-f4cc-3873-bda4-919bce08fc6c-thumb
  • 描述: Android 操作系統的主要組件結構
  • 大小: 64.7 KB

Android文檔閱讀02—解析Android程序

許可協(xié)議:creativecommons licenses 

 

在A(yíng)ndroid應用程序中有四個(gè)構建塊:

  • Activity
  • Intent Receiver
  • Service
  • Content Provider

并不是每個(gè)程序都需要所有的四個(gè)部分,你的程序可能用到它們其中一些的組合。

一旦你決定在你的程序中需要哪個(gè)組件,你應該在一個(gè)叫AndroidManifest.xml的文件中列出它們。你在這個(gè)XML文件中聲明程序中用到的組件和它們的用途和需要。在Android manifest file 文檔中查閱完整的細節。

 

 Activity

Activity是Android構造塊中最基本的一種,在應用中,一個(gè)activity通常就是一個(gè)單獨的屏幕。每一個(gè)activity都被實(shí)現為一個(gè)獨立的類(lèi),并且繼承于A(yíng)ctivity這個(gè)基類(lèi)。這個(gè)activity類(lèi)將會(huì )顯示由幾個(gè)Views控件組成的用戶(hù)接口,并對事件做出響應。大部份的應用都會(huì )包含多個(gè)的屏幕。例如,一個(gè)短消息應用程序將會(huì )有一個(gè)屏幕用于顯示聯(lián)系人列表,第二個(gè)屏幕用于寫(xiě)短消息,同時(shí)還會(huì )有用于瀏覽舊短消息及進(jìn)行系統設置的屏幕。每一個(gè)這樣的屏幕,就是一個(gè)activity。從一個(gè)屏幕導航到另一個(gè)屏幕是很簡(jiǎn)單的。在一些應用中,一個(gè)屏幕甚至會(huì )返回值給前一個(gè)屏幕。

 

當一個(gè)新的屏幕打開(kāi)后,前一個(gè)屏幕將會(huì )暫停,并保存在歷史堆棧中。用戶(hù)可以返回到歷史堆棧中的前一個(gè)屏幕。當屏幕不再使用時(shí),還可以從歷史堆棧中刪除。默認情況下,Android將會(huì )保留從主屏幕到每一個(gè)應用的運行屏幕。

Intent and Intent Filters

 

Android使用了Intent這個(gè)特殊類(lèi),實(shí)現在屏幕與屏幕之間移動(dòng)。Intent類(lèi)用于描述一個(gè)應用想要做什么事。在Intent的描述結構中,有兩個(gè)最重要的部分:動(dòng)作和動(dòng)作對應的數據。

典型的動(dòng)作類(lèi)型有:MAIN(activity的門(mén)戶(hù))、VIEW、PICK、EDIT等。而動(dòng)作對應的數據則以URI的形式進(jìn)行表示。例如:要查看一個(gè)人的聯(lián)系方式,你需要創(chuàng )建一個(gè)動(dòng)作類(lèi)型為VIEW的intent,以及一個(gè)表示這個(gè)人的URI。

Android利用一個(gè)叫Intent的特殊類(lèi)來(lái)實(shí)現屏幕間的切換。一個(gè)Intent描述了一個(gè)應用程序想要做什么。intent數據結構中兩個(gè)最重要的部分是動(dòng)作和動(dòng)作對應的數據。一個(gè)典型動(dòng)作的值是MAIN(活動(dòng)的入口),VIEW,PICK,EDIT,和其它一些。數據表示為URI。例如,瀏覽一個(gè)人的聯(lián)系信息,你應該創(chuàng )建一個(gè)帶有VIEW活動(dòng)的intent,并且URI的數據集指向那個(gè)人。

 

與之有關(guān)系的一個(gè)類(lèi)叫IntentFilter。相對于intent是一個(gè)有效的做某事的請求,一個(gè)intent filter則用于描述一個(gè)activity(或者Intent Receiver)能夠操作哪些intent。一個(gè)activity如果要顯示一個(gè)人的聯(lián)系方式時(shí),需要聲明一個(gè)IntentFilter,這個(gè)IntentFilter要知道怎么去處理VIEW動(dòng)作和表示一個(gè)人的URI。IntentFilter需要在A(yíng)ndroidManifest.xml中定義。

 

一個(gè)屏幕到另一個(gè)屏幕之間的導航是通過(guò)解析意圖(Intent)來(lái)實(shí)現的。當向前導航時(shí),activity將會(huì )調用startActivity (Intent myIntent)方法。然后,系統會(huì )在所有安裝的應用程序中定義的IntentFilter中查找,找到最匹配myIntent的 Intent對應的activity。新的activity接收到myIntent的通知后,開(kāi)始運行。當startActivity方法被調用將觸發(fā)解析 myIntent的動(dòng)作,這個(gè)機制提供了兩個(gè)關(guān)鍵好處:

  • Activity能夠簡(jiǎn)單的通過(guò)在Intent表中發(fā)送請求,從其他組件中復用功能
  • Activity能夠在任何時(shí)候由一個(gè)帶有相同IntentFilter的Activity替換

 Intent Receiver

當你希望你的應用能夠對一個(gè)外部的事件(如當電話(huà)呼入時(shí),或者數據網(wǎng)絡(luò )可用時(shí),或者到了晚上時(shí))做出響應,你可以使用一個(gè)Intent Receiver。雖然Intent Receiver在感興趣的事件發(fā)生時(shí),會(huì )使用NotificationManager 通知用戶(hù),但它并不能生成一個(gè)UI。Intent Receiver在A(yíng)ndroidManifest.xml中注冊,但也可以在代碼中使用 Context.registerReceiver()進(jìn)行注冊。當一個(gè)intent receiver被觸發(fā)時(shí),你的應用不必對請求調用intent receiver,系統會(huì )在需要的時(shí)候啟動(dòng)你的應用。各種應用還可以通過(guò)使用Context.broadcastIntent()將它們自己的 intent receiver廣播給其它應用程序。

 Service

一個(gè)Service是一段長(cháng)生命周期的,沒(méi)有用戶(hù)界面的程序。比較好的一個(gè)例子就是一個(gè)正在從播放列表中播放歌曲的媒體播放器。在一個(gè)媒體播放器的應用中,應該會(huì )有多個(gè)activity,讓使用者可以選擇歌曲并播放歌曲。然而,音樂(lè )重放這個(gè)功能并沒(méi)有對應的activity,因為使用者當然會(huì )認為在導航到其它屏幕時(shí)音樂(lè )應該還在播放的。在這個(gè)例子中,媒體播放器這個(gè)activity會(huì )使用Context.startService()來(lái)啟動(dòng)一個(gè)service,從而可以在后臺保持音樂(lè )的播放。同時(shí),系統也將保持這個(gè)service一直執行,直到這個(gè)service運行結束。另外,我們還可以通過(guò)使用Context.bindService()方法,連接到一個(gè)service上(如果這個(gè)service還沒(méi)有運行將啟動(dòng)它)。當連接到一個(gè)service之后,我們還可以service提供的接口與它進(jìn)行通訊。拿媒體播放器這個(gè)例子來(lái)說(shuō),我們還可以進(jìn)行暫停、重播等操作。

Content Provider

應用程序能夠將它們的數據保存到文件中、SQL數據庫中,甚至是任何有效的設備中。當你想將你的應用數據與其它的應用共享時(shí),Content Provider將會(huì )很有用。一個(gè)Content Provider類(lèi)實(shí)現了一組標準的方法,從而能夠讓其它的應用保存或讀取此Content Provider處理的各種數據類(lèi)型。

更詳細的Content Provider資料,可以參考附帶文檔中的Accessing Content Providers。
 

Android文檔閱讀03—開(kāi)發(fā)工具

 許可協(xié)議:creativecommons licenses

 

Android SDK包含了在A(yíng)ndroid平臺上開(kāi)發(fā)移動(dòng)應用的各種工具集。它不僅包括了Android模擬器和用于Eclipse的Android開(kāi)發(fā)工具插件(ADT),而且包括了各種用來(lái)調試、打包和在模擬器上安裝應用的工具。

 Android Emulator

Android模擬器:一個(gè)運行在電腦上的手機模擬器。你可以使用這個(gè)模擬器,在真實(shí)的Android運行環(huán)境中去設計、調試和測試自己開(kāi)發(fā)的應用程序。

 Android Development Tools Plugin for the Eclipse IDE

用于Eclipse集成開(kāi)發(fā)環(huán)境的Android應用開(kāi)發(fā)工具插件:它為Eclipse集成開(kāi)發(fā)環(huán)境增加了強大的功能,使得創(chuàng )建和調試Android應用程序更加簡(jiǎn)單和快速。如果你使用Eclipse來(lái)開(kāi)發(fā)Android應用,ADT插件將給你帶來(lái)極大的幫助:

  • 可以從Eclipse集成開(kāi)發(fā)環(huán)境內部訪(fǎng)問(wèn)別的Android開(kāi)發(fā)工具。例如,ADT允許你直接從Eclipse訪(fǎng)問(wèn)DDMS工具的很多功能,包括截屏、管理端口轉發(fā)(port-forwarding)、設置斷點(diǎn)、查看線(xiàn)程和進(jìn)程信息。
  • 它提供一個(gè)新的項目向導,用于快速創(chuàng )建一個(gè)新的Android應用需要的所有基本文件。
  • 它使構建Android應用的過(guò)程自動(dòng)化和簡(jiǎn)單化。
  • 它提供一個(gè)Android代碼編輯器,用于為Android的manifest和資源文件編寫(xiě)有效的XML。

更多的關(guān)于A(yíng)DT插件的信息,包括安裝指令,請參見(jiàn)Installing the ADT Plugin for Eclipse。Hello Android描述了一個(gè)有用的例子程序和程序的效果圖。

Dalvik Debug Monitor Service(ddms)

Dalvik調試監視服務(wù):它集成在Dalvik(Android平臺的虛擬機)中,用于管理運行在模擬器或設備上的進(jìn)程,并協(xié)助進(jìn)行調試。你可以用它來(lái)殺死進(jìn)程、選擇一個(gè)特定程序來(lái)調試、生成跟蹤數據、查看堆和線(xiàn)程數據、對模擬器或設備進(jìn)行屏幕快照等等。

Android Debug Bridge (adb)

Android調試橋:它用于向模擬器或設備安裝應用程序的.apk文件和從命令行訪(fǎng)問(wèn)模擬器或設備。也可以用于將標準的調試器連接到運行在A(yíng)ndroid模擬器或設備上的應用代碼。

 Android Asset Packaging Tool (aapt)

Android資源打包工具:你可以通過(guò)aapt工具來(lái)創(chuàng )建.apk文件,這些文件包含了Android應用程序的二進(jìn)制文件和資源文件。

Android Interface Description Language (aidl)

Android接口描述語(yǔ)言:它用來(lái)生成進(jìn)程間接口代碼。例如,在一個(gè)服務(wù)中可能就會(huì )用到。

sqlite3

SQLite3數據庫:Android應用程序可以創(chuàng )建和使用SQLite數據文件,而開(kāi)發(fā)者和使用者也可以方便的訪(fǎng)問(wèn)這些SQLite數據文件。

Traceview

跟蹤顯示工具:它可以生成跟蹤日志數據的圖形分析視圖。這些跟蹤日志數據由Android應用程序產(chǎn)生。

mksdcard

創(chuàng )建SD卡工具:它幫助創(chuàng )建磁盤(pán)鏡像。這個(gè)磁盤(pán)鏡像可以在模擬器上模擬外部存儲卡(比如SD卡)。

dx

DX工具:它將.class字節碼重寫(xiě)為Android字節碼(存儲在.dex文件中)。

activityCreator

activityCreator:它是一個(gè)腳本,用來(lái)生成Ant構建文件。Ant構建文件用來(lái)編譯Android應用程序。如果你在安裝了ADT插件的Eclipse環(huán)境下開(kāi)發(fā),就不需要這個(gè)腳本了。
 
 

Android文檔閱讀04—Application的生命周期

 許可協(xié)議:creativecommons licenses

 

在多數情況下, 每個(gè)Android應用運行在自己的Linux進(jìn)程中. 當一個(gè)應用的某段code需要運行的時(shí)候這個(gè)進(jìn)程將會(huì )被創(chuàng )建, 直到不再需要該應用或系統要為其他的應用釋放內存的時(shí)候才停止.

 

一個(gè)非常重要且少有的特性是, 應用進(jìn)程的存活時(shí)間不是由這個(gè)應用直接控制的. 而是由系統決定的, 系統會(huì )根據每個(gè)已知的正在運行的應用情況來(lái)定奪, 包括, 該應用對用戶(hù)的重要性和系統全部可用內存.

 

對于開(kāi)發(fā)人員來(lái)講, 了解每個(gè)應用組件(尤其是, Activity, Service, 和IntentReceiver)對于應用進(jìn)程存活時(shí)間的影響是非常重要的. 如果沒(méi)有正確使用, 可能會(huì )導致應用進(jìn)程在處理重要工作的時(shí)候被系統殺掉.

 

在對應用進(jìn)程生命周期的理解中, 一個(gè)典型的錯誤就是當一個(gè)IntentReceiver 接收到Intent 之后, 會(huì )在自己的onReceiveIntent()方法中開(kāi)起一個(gè)線(xiàn)程, 而后return這個(gè)方法. 一旦這個(gè)方法return, 系統會(huì )認為這個(gè)IntentReceiver 不在處于活躍狀態(tài), 也就認為他的宿主進(jìn)程不再需要(除非還包有其他活躍的應用組件). 以至于當系統需要回收內存的時(shí)候會(huì )隨時(shí)釋kill掉這個(gè)進(jìn)程, 中止其中的子線(xiàn)程. 解決這個(gè)問(wèn)題的辦法是在IntentReceiver中啟動(dòng)一個(gè)Service, 這樣系統會(huì )知道在這個(gè)進(jìn)程中還有活躍的任務(wù)需要完成.

 

為了決定在內存較低的時(shí)候殺掉哪個(gè)進(jìn)程, Android會(huì )根據運行在這些進(jìn)程內的組件及他們的狀態(tài)把進(jìn)程劃分成一個(gè)"重要程度層次". 其重要的程度按以下規則排序:

  1. 前端進(jìn)程可以是一個(gè)持有運行在屏幕最前端并與用戶(hù)交互的Activity的進(jìn)程(onResume方法被調用時(shí)),也可以是持有一個(gè)正在運行的IntentReceiver(也就是說(shuō)他正在執行自己的onReceiveIntent方法)的進(jìn)程. 在系統中, 只會(huì )有少數這樣的進(jìn)程, 并且除非內存已經(jīng)低到不夠這些進(jìn)程運行, 否則系統不會(huì )主動(dòng)殺掉這些進(jìn)程. 這時(shí), 設備通常已經(jīng)達到了需要內存整理的狀態(tài), 所以殺掉這些進(jìn)程是為了不讓用戶(hù)界面停止響應.
  2. 可視進(jìn)程是持有一個(gè)被用戶(hù)可見(jiàn), 但沒(méi)有顯示在最前端 (onPause方法被調用時(shí)) 的Activity的進(jìn)程. 舉例來(lái)說(shuō), 這種進(jìn)程通常出現在一個(gè)前端Activity以一個(gè)對話(huà)框出現并保持前一個(gè)Activity可見(jiàn)時(shí). 這種進(jìn)程被系統認為是極其重要的, 并且通常不會(huì )被殺掉, 除非為了保持所有前端進(jìn)程正常運行不得不殺掉這些可見(jiàn)進(jìn)程.
  3. 服務(wù)進(jìn)程是持有一個(gè)Service的進(jìn)程, 該Service是由startService()方法啟動(dòng)的, 盡管這些進(jìn)程用戶(hù)不能直接看到, 但是通常他們做的工作用戶(hù)是十分關(guān)注的(例如, 在后臺播放mp3或是在后臺下載 上傳文件), 所以, 除非為了保持所有的前端進(jìn)程和可視進(jìn)程正常運行外, 系統是不會(huì )殺掉服務(wù)進(jìn)程的.
  4. 后臺進(jìn)程是持有一個(gè)不再被用戶(hù)可見(jiàn)的Activity(onStop()方法被調用時(shí))的進(jìn)程. 這些進(jìn)程不會(huì )直接影響用戶(hù)體驗. 加入這些進(jìn)程已經(jīng)完整的,正確的完成了自己的生命周期(訪(fǎng)問(wèn)Activity查看更多細節), 系統會(huì )在為前三種進(jìn)程釋放內存時(shí)隨時(shí)殺掉這些后臺進(jìn)程. 通常會(huì )有很多的后臺進(jìn)程在運行, 所以這些進(jìn)程被存放在一個(gè)LRU列表中, 以保證在低內存的時(shí)候, 最近一個(gè)被用戶(hù)看到的進(jìn)程會(huì )被最后殺掉.
  5. 空進(jìn)程是沒(méi)有持有任何活動(dòng)應用組件的進(jìn)程. 保留這種進(jìn)程的唯一理由是為了提供一種緩存機制, 縮短他的應用下次運行時(shí)的啟動(dòng)時(shí)間. 就其本身而言, 系統殺掉這些進(jìn)程的目的是為了在這些空進(jìn)程和底層的核心緩存之間平衡整個(gè)系統的資源.
當需要給一個(gè)進(jìn)程分類(lèi)的時(shí)候, 系統會(huì )在該進(jìn)程中處于活動(dòng)狀態(tài)的所有組件里掉選一個(gè)重要等級最高作為分類(lèi)依據. 查看Activity, Service,和IntentReceiver的文檔, 了解每個(gè)組件在進(jìn)程整個(gè)生命周期中的貢獻. 每一個(gè)classes的文檔詳細描述他們在各自應用的生命周期中所起得作用.
 

Android文檔閱讀05—Hello, Android!及調試

 許可協(xié)議:creativecommons licenses

 

第一印象,作為一個(gè)開(kāi)發(fā)人員,我們對一個(gè)新的開(kāi)發(fā)框架的第一印象通常是看他的”Hello,World!”程序有多簡(jiǎn)單。在A(yíng)ndroid中,實(shí)現起來(lái)是非常簡(jiǎn)單的。

實(shí)現Hello World需要幾個(gè)步驟:

  • 創(chuàng )建項目
  • 設計用戶(hù)界面
  • 運行程序:Hello,Android 

以下幾節討論更加詳細的內容

  • 通過(guò)(XML 布局)XML Layout更新用戶(hù)界面
  • 調試程序
  • 不使用Eclipse創(chuàng )建項目

Let‘s jump in! 廢話(huà)少說(shuō),馬上開(kāi)始。

創(chuàng )建項目

創(chuàng )建項目非常簡(jiǎn)單,Eclipse的插件使Adroid的開(kāi)發(fā)變得異常輕松。首先你需要安裝一個(gè)3.3或以上版本的eclipse(譯注:其實(shí)3.2也是可以的),然后給Eclipse安裝一個(gè)Android插件。安裝好上面的內容后,我們就可以開(kāi)始了。

首先,我們來(lái)一個(gè)總結來(lái)看看到底需要幾步來(lái)完成我們的"Hello, World!"。

1. 通過(guò)Eclipse的 File > New > Project 菜單創(chuàng )建"Android Project"項目。

2. 在新Android 項目對話(huà)框中添加項目的詳細信息

3. 修改自動(dòng)生成代碼模板來(lái)顯示一些東西

上面3步已經(jīng)足夠了!接下來(lái),讓我們開(kāi)始吧

 

1. 創(chuàng )建Android項目

在Eclipse中選擇 File > New > Project 菜單項。如果你已經(jīng)成功安裝了Android 插件,你會(huì )在彈出的新項目對話(huà)框中看到一個(gè)叫做“Android”的條目,包含一個(gè)”Android Project”的項目

 

選中"Android Project",點(diǎn)擊 Next進(jìn)行入下一步。

 

2. 填寫(xiě)項目的相關(guān)信息

這個(gè)窗口里你需要填寫(xiě)一些項目的相關(guān)信息.請看圖中的示例:

 

下面解釋一下屏幕上的內容:

 

這是計算機中保存項目文件目錄的名稱(chēng)。

這是和Java語(yǔ)言意義相同的包名(Package namespace)—你的源代碼將屬于這個(gè)包名。同時(shí)stub Activity也將據此生成。

你所給出的報名必須保證在你的應用中是唯一的;因為這個(gè)原因,包的命名遵循域名方式(domain-style)就顯得非常重要了;在實(shí)例中我們使用"com.google.android"作為包名;你可以選擇一個(gè)適合你自己的包名。

 

Android插件將根據這個(gè)名稱(chēng)來(lái)創(chuàng )建一個(gè)stub類(lèi)。他是一個(gè)繼承自Activity類(lèi)的子類(lèi)。Activity類(lèi)似一個(gè)簡(jiǎn)單的可以運行和工作的類(lèi)。它能夠根據你的需要創(chuàng )建用戶(hù)界面,當然了這不是必須的。

 這是你應用程序的標題。

 

你可以通過(guò)選擇"Use default location"這個(gè)復選框來(lái)項目文件的存儲位置。

 

3.編輯自動(dòng)生成的程序代碼

 

Android插件執行完畢后將創(chuàng )建一個(gè)叫做HelloAndroid類(lèi),他的內容如下:

Java代碼 復制代碼
  1. public class HelloAndroid extends Activity {  /**在activity被創(chuàng )建后執行*/    
  2.   
  3.    @Override  
  4.    public void onCreate(Bundle icicle)   
  5.    {   
  6.        super.onCreate(icicle);   
  7.        setContentView(R.layout.main);   
  8.    }   
  9. }   

創(chuàng )建用戶(hù)界面

創(chuàng )建好項目以后,我們要做的是在屏幕上顯示一點(diǎn)文字。下面是完成后的代碼,我們將逐行分析它:

Java代碼 復制代碼
  1. public class HelloAndroid extends Activity {/**在activity被創(chuàng )建后執行*/    
  2.   
  3.    @Override  
  4.    public void onCreate(Bundle icicle) {   
  5.        super.onCreate(icicle);   
  6.        TextView tv = new TextView(this);   
  7.        tv.setText("Hello, Android");   
  8.        setContentView(tv);   
  9.    }   
  10. }   

在A(yíng)ndroid中,用戶(hù)界面是由View來(lái)組成的。一個(gè)View就是一個(gè)drawable的對象,比如一個(gè)單選按鈕,一個(gè)動(dòng)畫(huà),或者(本例中)是一個(gè)文字標簽。View子類(lèi)型中用來(lái)顯示文字 類(lèi)是TextView。

下面演示如何構建一個(gè)TextView的實(shí)例

Java代碼 復制代碼
  1. TextView tv = new TextView(this);   

 TextView構造函數中的參數類(lèi)型是Context。Context類(lèi)可以簡(jiǎn)單的理解為系統的句柄;他提供訪(fǎng)問(wèn)了諸如資源、數據庫以及程序設置的服務(wù)。Activity類(lèi)繼承自Context。我們的HelloAndroid類(lèi)繼承自Activity類(lèi),他同時(shí)也繼承了Context。正因為如此我們才能使用’this’這個(gè)參數來(lái)創(chuàng )建TextView。

 

上面我們已經(jīng)創(chuàng )建了一個(gè)TextView,下面我們來(lái)讓他顯示些文字:

Java代碼 復制代碼
  1. tv.setText("Hello, Android");   

 這里沒(méi)有什么好說(shuō)的。

我們已經(jīng)創(chuàng )建了一個(gè)TextView并且告訴了他要顯示什么,最后就是讓他顯示在屏幕上了,就像下面這樣:

Java代碼 復制代碼
  1. setContentView(tv);   

 setContentView()方法讓系統知道哪個(gè)View是與Activity的界面有聯(lián)系的。如果你的Activity沒(méi)有執行這個(gè)方法,界面將什么都不會(huì )顯示,系統只會(huì )顯示空屏幕。我們的目的是要顯示一些文字,所以我們在這個(gè)方法的參數中填上TextView。

 

這就是我們Android中的"Hello, World"了!接下來(lái)當然是看看如何運行它了。

運行程序:Hello, Android

Android提供的Eclipse插件使得運行我們的程序非常簡(jiǎn)單。選擇Run > Open Run Dialog菜單;你會(huì )看到一個(gè)這樣的對話(huà)框:

 

接下來(lái),選中"Android Application"這一項。點(diǎn)擊左上角按鈕(文檔圖標上有個(gè)加號的那個(gè))或者簡(jiǎn)單雙擊"Android Application"項。你會(huì )得到一個(gè)叫做"New_configuration" 新launcher。

 

選擇一個(gè)更好的名字,比如"Hello, Android", 點(diǎn)擊"Browse"按鈕選擇你的項目。(如果你現在打開(kāi)了多個(gè)Android的項目,一定要確認你選擇了正確的那個(gè))。Android插件會(huì )自動(dòng)的掃描你的項目來(lái)查找Activity 的子類(lèi),在"Activity:" 標簽下面的下拉框中列出所有的選項。你的"Hello, Android" 只有一個(gè),他將作為缺省的選項。

點(diǎn)擊 "Apply" 按鈕。示例如下:

 

大功告成!點(diǎn)擊run按鈕,Androi模擬器將運行。當模擬器啟動(dòng)完成你將看到你的程序。到這里我們就完成了。

 

這就是我們Android中 “Hello,World”。很簡(jiǎn)單吧,嗯?下面的章節我們會(huì )探討一些比較深入的東西,對你學(xué)習Android肯定有所幫助。

通過(guò)XML Layout構造用戶(hù)界面

你剛剛完成"Hello, World"時(shí)通過(guò)編程來(lái)創(chuàng )建用戶(hù)界面的。也就是說(shuō)你在你的程序代碼中來(lái)創(chuàng )建界面。如果你以前做過(guò)很多的界面編程,你一定知道有個(gè)非常麻煩的事情:在一大段代碼中找到并且修改一個(gè)小的界面變化是很頭疼的。而且也容易忘記屬性與視圖之間的關(guān)系,從而導致錯誤,浪費大量的時(shí)間來(lái)調試代碼。

 

這就是Android提供了一個(gè)替代創(chuàng )建用戶(hù)界面的模式:基于XML的XML Layout文件。解釋這個(gè)概念的最好方法就是創(chuàng )建一個(gè)例子。這個(gè)XML Layout文件實(shí)現了我們上面用程序代碼實(shí)現的功能。

Xml代碼 復制代碼
  1. <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android"    
  2.   
  3.  android:layout_width="fill_parent"  
  4.  android:layout_height="fill_parent"  
  5.  android:text="Hello, Android"  
  6.   
  7. />  

一般的Android XML Layout 文件 結構非常簡(jiǎn)單。它由樹(shù)形的標記組成,每一個(gè)標記都是一個(gè)View類(lèi)。在上面這個(gè)例子中只有一個(gè)元(element)-TextView。你可以在XML layout中使用任何一個(gè)繼承自View的類(lèi),也包括你自己定義的類(lèi)。這樣簡(jiǎn)單的結構和語(yǔ)法使我們能夠比使用代碼更快的創(chuàng )建用戶(hù)界面。它的靈感來(lái)自Web開(kāi)發(fā)中用戶(hù)界面與程序邏輯分開(kāi)的模式。

 

這個(gè)例子中只有4個(gè)XML屬性,下面列出含義:

android:layout_width

                                         這個(gè)屬性定義了使用寬度,磁力中使用最大可用寬度。

android:layout_height

                                          同上,使用可用的屏幕高度

android:text 

TextView顯示的文字內容,這個(gè)例子中顯示 "Hello, Android                   

 

這就是XML layout的內容,但是該將它放在那里呢?在項目的res/ 目錄中。這個(gè)"res"是對"resources"的縮寫(xiě),這個(gè)目錄中存放項目中所有不是代碼的資源或文件。包括:圖片,本地字符串,XML layout文件。

 

Eclipse插件已經(jīng)為我們創(chuàng )建了這些XML文件。在我們上面的例子中,我們根本沒(méi)有使用過(guò)他們。在Package Explorer中展開(kāi)res/layout,目錄,修改其中的main.xml文件。使用上面的文本替換掉他的內容?,F在從Package Explorer中的源代碼文件夾中打開(kāi)R.java文件,你將看到如下內容:

Java代碼 復制代碼
  1. public final class R {    
  2.   
  3.    public static final class attr {   
  4.    };   
  5.    public static final class drawable {   
  6.        public static final int icon=0x7f020000;   
  7.    };   
  8.    public static final class layout {   
  9.        public static final int main=0x7f030000;   
  10.    };   
  11.    public static final class string {   
  12.        public static final int app_name=0x7f040000;   
  13.    };   
  14. }  

 

項目中的R.java文件是對文件中所有定義資源的索引??梢杂米詈?jiǎn)單的方式在代碼中使用項目中定義的資源。利用Eclipse的代碼提示功能可以更快找到需要的內容。

 

其中最重要的兩個(gè)內部類(lèi)就是"layou"和"main"。Eclipse插件會(huì )根據你在XML layout文件中更改自動(dòng)生成R.java文件。當時(shí)你在項目中添加了其他資源后你會(huì )先R.java會(huì )馬上發(fā)生變化。

 

最后一件事就是你要修改你的HelloAndroid 代碼,讓程序使用XML layout文件定義的界面而不是采用我們以前的硬編碼方式??纯船F在的代碼,簡(jiǎn)單多了:

Java代碼 復制代碼
  1. public class HelloAndroid extends Activity {    
  2.   
  3.    /** Called when the activity is first created. */  
  4.    @Override  
  5.    public void onCreate(Bundle icicle) {   
  6.        super.onCreate(icicle);   
  7.        setContentView(R.layout.main);    
  8.    }   
  9. }   

 

不要簡(jiǎn)單的拷貝粘貼來(lái)修改文件,試試R類(lèi)的代碼自動(dòng)完成,這是你或許感覺(jué)到R類(lèi)的作用了。

 

好,現在你已經(jīng)完成了修改,讓我們重新運行一下程序---你要做的就是點(diǎn)擊以下有綠色箭頭圖標的Run按鈕,或者選擇Run>Run菜單來(lái)運行。你會(huì )看到和以前相同的結果。我們可以看出兩種不同的布局方法結果是相同的。

 

我們只是對XML layouts有了個(gè)大概的了解,你需要閱讀用戶(hù)界面部分的完整文檔來(lái)獲取進(jìn)一步的信息。

 調試程序

Android的Eclipse的插件也能夠完美的與Eclipse的調試器集成。為了證實(shí)這一點(diǎn),我們來(lái)做一個(gè)簡(jiǎn)單的測試。將你HelloAndroid 程序的代碼改成這樣:

這段代碼很明顯將產(chǎn)生一個(gè)NullPointerException 異常。運行后你看到:

Java代碼 復制代碼
  1. public class HelloAndroid extends Activity {    
  2.   
  3.   /** Called when the activity is first created. */  
  4.   @Override  
  5.   public void onCreate(Bundle icicle) {   
  6.       super.onCreate(icicle);   
  7.       Object o = null;   
  8.       o.toString();   
  9.       setContentView(R.layout.main);   
  10.   }   
  11. }  

 

為了找出錯誤,我們在"Object o = null;"這一行設置一個(gè)斷點(diǎn)(你可以通過(guò)雙擊eclipse編輯器行號左邊的空余部分來(lái)創(chuàng )建)。選擇 Run > Debug菜單進(jìn)入到調試模式。你的程序在模擬器中重新啟動(dòng),但是這次程序會(huì )在運行到斷點(diǎn)的地方停住。就行你在其他開(kāi)發(fā)工具中那樣,你可以在Eclipse的Debug Perspective中檢查代碼。

不使用eclipse創(chuàng )建項目

如果你不使用Eclipse(比如其他IDE或者是使用簡(jiǎn)單的文本編輯器和命令行工具),那么Android的Eclipse插件就幫不了你了。但是別太擔心--你不會(huì )因為不使用Eclipse而失去某些功能。

 

Android 插件實(shí)際上只是對SDK里面的工具做了一下封裝。因此可以使用其他工具來(lái)封裝這些工具,比如‘ant‘來(lái)編譯文件。(像emulator, aapt, adb, ddms這些工具都可以在文檔中找到使用的方法)

 

Android SDK 同時(shí)包含了一個(gè)名稱(chēng)為"activityCreator.py"的Python的程序腳本,用來(lái)創(chuàng )建項目中的代碼和目錄,以及一個(gè)兼容‘ant‘的build.xml文件。這使得你可以通過(guò)命令行或者使之與其他的IDE工具集成。

 

例如,創(chuàng )建一個(gè)想剛才我們在eclipse中創(chuàng )建的HelloAndroid 項目,你可以使用這樣的命令:

activityCreator.py --out HelloAndroid com.google.android.hello.HelloAndroid

為了編譯這個(gè)項目,你必須使用ant命令。當命令成功完成后,你可以在‘bin‘目錄中找到一個(gè)HelloAndroid.apk文件。這個(gè).apt文件就是一個(gè)Android 包,你可以使用‘adb‘工具把它安裝到模擬器中。

 
 

Android 文檔的閱讀順序

因為看了看Android Blog, 在最新的文章里面介紹了幾篇文章,其中一篇是<<以開(kāi)發(fā)者的眼光來(lái)看Android SDK>>,作者在其中分析了的關(guān)于DOC的閱讀順序引起了我的興趣,確實(shí),那么多的文檔,應該怎么看呢?哪些是必須先弄明白的?哪些應該先知道個(gè)大概,今后引用的時(shí)候再細細閱讀?現在簡(jiǎn)要的介紹一下原作者的觀(guān)點(diǎn),希望能幫上你的忙。

1.
首先當然是要知道,什么是Android?
2.
讀一下Anatomy of an Android Application 能夠知道一個(gè)Android application 中到底都有些什么東西
3.  
接著(zhù)可以讀一下 Development Tools 文檔
4.  
然后可以看一下關(guān)于什么周期的文章 Lifecycle of an Android Application
5.
現在可以動(dòng)手了,玩玩hello world 吧,Hello Android
6.
回去讀一下 Installing the SDK文檔,再這篇文章的后半部分講了很多關(guān)于Debug的功能和技巧
7.
開(kāi)始Notepad Application 的制作和學(xué)習吧,如果你真正弄懂了關(guān)于這個(gè)應用程序的4個(gè)練習,你已經(jīng)從菜鳥(niǎo)開(kāi)始轉向高手嘍。
8. Developing Android Applications
花了很多時(shí)間來(lái)介紹更多的細節,包括如何實(shí)現UI,數據存儲和讀取,安全問(wèn)題等
9.
最后,你現在可以自由的漫步在links中了,找你感興趣的讀讀吧。
 
 
 
 
 
 
 
 
 
 
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Android入門(mén)
Hello Android
Android 項目在Eclipse中的目錄結構
關(guān)于A(yíng)ndroid開(kāi)發(fā)環(huán)境的構建方法總結
新建android工程的時(shí)候eclipse沒(méi)有生成MainActivity和layout布局
一個(gè)android工程的運行過(guò)程
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久