首頁 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場(chǎng)

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計(jì)算器

綜合交流 / 評(píng)測(cè) / 活動(dòng)區(qū)

交流區(qū) | 測(cè)硬件 | 網(wǎng)站活動(dòng) | Z幣中心

新手入門 / 進(jìn)階 / 社區(qū)互助

新手 | 你問我答 | 免費(fèi)刷機(jī)救磚 | ROM固件

查看: 14189|回復(fù): 0
上一主題 下一主題
[教程]

《Android Dev Guide》系列教程2:應(yīng)用基礎(chǔ)之組件篇1

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2013-8-28 16:29 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
>
   
@ 每個(gè)繼承擁有自己的虛擬機(jī),所以程序間的運(yùn)行是互相隔離的。
@ 默認(rèn)情況下,每個(gè)應(yīng)用程序都會(huì)分到一個(gè)特殊的Linux用戶ID,并被設(shè)置權(quán)限,只對(duì)應(yīng)用程序自己可見和使用,當(dāng)然可以對(duì)其他程序開放。
可以安排兩個(gè)程序共享一個(gè)UserID,這樣他們可以互相看到對(duì)方的文件,共享系統(tǒng)資源,并且在同一個(gè)Linux線程里運(yùn)行,共享虛擬機(jī)。
Android的一個(gè)核心特點(diǎn)就是一個(gè)應(yīng)用程序可以由其他應(yīng)用程序的組件來組成(在其他程序允許的前提下)。例如:如果你的程序需要顯示一個(gè)圖片列表并且另一個(gè)程序已經(jīng)開發(fā)了合適的滾動(dòng)條且允許其 他應(yīng)用程序添加,那么你可以在他的滾動(dòng)條基礎(chǔ)上開發(fā),比自己開發(fā)要方便的多。你的程序不需要合并他的代碼只需要一個(gè)連接即可。相比之下,當(dāng)我需要某個(gè)程序然后可以啟動(dòng)他時(shí)是最簡單的。
想要這樣的話,當(dāng)這個(gè)程序的某一部分被別人用到時(shí),系統(tǒng)必須能都啟動(dòng)一個(gè)應(yīng)用程序的進(jìn)程,并且實(shí)例化這些相關(guān)的Java對(duì)象,因此,與其他系統(tǒng)的應(yīng)用程序不同的是,android程序沒有一個(gè)單一的入 口程序(例如main方法),相比下,android有四種基本的組件可以被系統(tǒng)實(shí)例化、啟動(dòng)。包括:Activities、Services、Broadcast receivers、Content providers。
Activity提供了一個(gè)可視化的用戶接口,例如:一個(gè)activity可以提供一個(gè)列表,供用戶選擇,或者在拍照時(shí)顯示照片列表。一個(gè)短信程序有一個(gè)activity顯示聯(lián)系人列表,另一個(gè)activity可以寫短信 并且選擇聯(lián)系人發(fā)送,別的activity可以查看以往的短信內(nèi)容并且更改設(shè)置。這幾個(gè)activity共同在一個(gè)用戶界面里發(fā)揮著作用,他們之間互相依賴,每一個(gè)都是繼承自activity基類的子類。
一個(gè)應(yīng)用程序可以包含一個(gè)或者多個(gè)activity,例如剛提到的短信程序。需要多少就可以包含多少。通常,被標(biāo)記的第一個(gè)activity先運(yùn)行。當(dāng)前activity啟動(dòng)完就啟動(dòng)下一個(gè)。
每個(gè)activity都被分配一個(gè)默認(rèn)的窗口來繪制。通常是全屏,也可以比屏幕小或者浮在其他窗口上。一個(gè)activity可以利用額外的窗口,例如:在activity里探出一個(gè)讓用戶想用的彈出對(duì)話框,或者顯 示一個(gè)給用戶顯示重要信息供用戶選擇的特殊選項(xiàng)。
窗口的可視內(nèi)容由層式結(jié)構(gòu)的view來顯示,他們繼承自view基類。每個(gè)view控制一個(gè)特定矩形空間內(nèi)的窗口。父view控制并且組織子view 的顯示。子view(上層的view)被繪制在矩形里響應(yīng)用戶的操作 ,從而與用戶交互信息。例如可以顯示一副小圖片用戶點(diǎn)擊圖片時(shí)響應(yīng)一個(gè)事件。Android有很多現(xiàn)成的view可以被直接使用,包括按鈕、文本框、滾動(dòng)條、菜單、選擇框等等。
通過Activity.setContentView()可以改變activity的顯示,content view 是根視圖。
servers沒有用戶接界面,但它確實(shí)在后臺(tái)不定期的運(yùn)行著。例如:但用戶處理其他事情時(shí),一個(gè)service可以背景播放音樂、后臺(tái)讀取網(wǎng)絡(luò)數(shù)據(jù)或者處理其他的東西并且提供給其他的activity,每一個(gè) servers都繼承自Service基類。
一個(gè)最好的例子就是媒體播放器。播放器大概需要一個(gè)或多個(gè)activity來允許用戶選擇歌曲并且播放。然而,播放器不必是當(dāng)前活動(dòng)的activity,用戶可能在播放時(shí)做別的事情。播放器需要啟動(dòng)一個(gè)后 臺(tái)來持續(xù)播放音樂。系統(tǒng)會(huì)一直播放這個(gè)播放器service甚至當(dāng)他隱藏時(shí)。
我們可以鏈接到一個(gè)正在運(yùn)行的service,或者啟動(dòng)一個(gè)沒有運(yùn)行的service,當(dāng)連接成功時(shí),你可以和service的進(jìn)程通信。例如播放器,用戶可以控制他的開始暫停重放等功能。
像activity和其他的組件一樣,services運(yùn)行在主線程。所以不會(huì)阻塞其他的組件或者用戶界面。他們往往啟動(dòng)一個(gè)新的任務(wù)??蓞⒖糚rocess and Threads。
Broadcast receiver這個(gè)組件只是接受receive和響應(yīng)Broadcast廣播通知。很多廣播來源系統(tǒng)代碼,例如通知時(shí)區(qū)已經(jīng)改變、低電量、圖片被選中、用戶改變了語言設(shè)置,此時(shí)用戶開始廣播,例如,同 事其他應(yīng)用程序網(wǎng)絡(luò)數(shù)據(jù)已經(jīng)下載ok可以使用了。
一個(gè)Broadcast receiver 可以響應(yīng)多個(gè)廣播,所有的Broadcast receiver 都繼承自BroadcastReceiver基類。
Broadcast receivers 沒有用戶界面。然而,他們可以在接收到消息啟動(dòng)一個(gè)activity,或者使用notificationManager 去提醒用戶。Notifications 可以通過一些方式引起用戶注意:閃動(dòng)背光、 震動(dòng)、發(fā)聲等等。通常在狀態(tài)欄顯示一個(gè)提示圖標(biāo)讓用戶可以查看。
Content providers為其他程序提供數(shù)據(jù)集,這些數(shù)據(jù)可以保存在系統(tǒng)文件里或者sqlite數(shù)據(jù)庫里,Content providers繼承自 ContentProvider基類,實(shí)現(xiàn)了一些標(biāo)準(zhǔn)的方法,可以 讓程序檢索或者改寫其中的數(shù)據(jù)。程序不能直接的調(diào)用那些方法。ContentResolver不能與content provider直接通信,但可以用過ContentResolver 。ContentResolver 可以跟任何的content provider通信,可以與provider合作管理通 信進(jìn)程。
更多信息查看Content Providers文檔。
當(dāng)有需要特定的請(qǐng)求需要被處理時(shí),Android都會(huì)確保他正在運(yùn)行,需要時(shí)會(huì)創(chuàng)建一個(gè)實(shí)例。
   
   
   
   
   
   
   

上一篇:轉(zhuǎn)帖:進(jìn)100個(gè)優(yōu)秀開發(fā)項(xiàng)目
下一篇:Android2.2 API 中文文檔系列 —— TextView

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號(hào) )

網(wǎng)絡(luò)信息服務(wù)信用承諾書 | 增值電信業(yè)務(wù)經(jīng)營許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號(hào)

GMT+8, 2024-12-22 16:01 , Processed in 0.065888 second(s), 15 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報(bào):report#znds.com (請(qǐng)將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表