自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

51CTO專家專欄 李洋談Android應(yīng)用程序管理

原創(chuàng)
移動(dòng)開(kāi)發(fā) Android
本文為51CTO移動(dòng)開(kāi)發(fā)頻道邀請(qǐng)安全專家李洋撰寫的專家專欄的第四篇文章。在本文中,51CTO特約撰稿人李洋老師將向我們介紹Android應(yīng)用程序管理。

【51CTO獨(dú)家特稿】在繼《李洋談Android安全框架》系列文章之后,本文李洋老師將向我們介紹《Android應(yīng)用程序管理》。

1. 簡(jiǎn)介

Android一詞的本義指“機(jī)器人”,谷歌的基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng)以“Android”命名,以機(jī)器人為標(biāo)志。Android系統(tǒng)早期由谷歌開(kāi)發(fā),后由開(kāi)放手持設(shè)備聯(lián)盟(Open Handset Alliance,OHA)開(kāi)發(fā)。OHA由谷歌與34家廠商一起于2007年11月5日創(chuàng)立,包括手機(jī)制造商、電信運(yùn)營(yíng)商和芯片制造商,如下表。OHA創(chuàng)立的同時(shí),谷歌發(fā)布了Android系統(tǒng)。

Android采用了軟件堆層(Software stack,又名以軟件疊層)的架構(gòu),主要分為三部分,包括底層Linux內(nèi)核、Android中間件和系統(tǒng)關(guān)鍵應(yīng)用程序。Android中間件以Dalvik虛擬機(jī)為基礎(chǔ)構(gòu)成,這是由谷歌自己設(shè)計(jì)開(kāi)發(fā)的Java Virtual Machine。Android上的應(yīng)用使用Java語(yǔ)言開(kāi)發(fā),Android SDK為在Android系統(tǒng)上開(kāi)發(fā)Java應(yīng)用提供了一整套開(kāi)發(fā)工具和API。

2. 應(yīng)用程序組成

Android的每個(gè)應(yīng)用程序都對(duì)應(yīng)一個(gè)安裝包,稱之為APK (Android Package), 在系統(tǒng)運(yùn)行時(shí)每一個(gè)APK對(duì)應(yīng)一個(gè)操作系統(tǒng)進(jìn)程。

下圖所示為APK中所包含的組件

APK中所包含的組件

(1)Activity:Activity就是一個(gè)界面,這個(gè)界面里面可以放置各種控件,如短信編輯框等;

(2)Service:服務(wù)是運(yùn)行在后臺(tái)的功能模塊。如文件下載、音樂(lè)播放程序等;

(3)Content Provider:它是Android平臺(tái)應(yīng)用程序間數(shù)據(jù)共享的一種標(biāo)準(zhǔn)接口,它以類似于URI(Universal Resources Identification)的方式來(lái)表示數(shù)據(jù),如:content://contacts/people/1101;

(4)Broadcast Receiver:與此組件相關(guān)的概念是Intent,Intent是一個(gè)對(duì)動(dòng)作和行為的抽象描述,負(fù)責(zé)一個(gè)程序的組件之間、不同程序之間進(jìn)行消息傳遞,Intent包括目標(biāo)組件地址和消息數(shù)據(jù)。Broadcast Receiver組件負(fù)責(zé)實(shí)現(xiàn)偵聽(tīng)I(yíng)ntent消息并對(duì)其作出反應(yīng)。

下圖為APK中各組件之間的典型關(guān)系示例。

APK中各組件之間的典型關(guān)系示例

3. 應(yīng)用程序生命周期管理

Android的每個(gè)應(yīng)用程序以一個(gè)Linux進(jìn)程運(yùn)行,默認(rèn)情況下,在進(jìn)程中執(zhí)行一個(gè)單一的線程,應(yīng)用程序所有的組件均在這個(gè)進(jìn)程的這個(gè)線程中運(yùn)行。當(dāng)然也可以為任意進(jìn)程衍生出其它線程。Android系統(tǒng)會(huì)盡可能長(zhǎng)的延續(xù)一個(gè)應(yīng)用程序進(jìn)程執(zhí)行,確保其正常執(zhí)行結(jié)束。除了應(yīng)用程序執(zhí)行結(jié)束后,正常釋放內(nèi)存外,在內(nèi)存過(guò)低超過(guò)閥值時(shí),系統(tǒng)仍然會(huì)不可避免需要移除舊的進(jìn)程。為決定保留或移除一個(gè)進(jìn)程,Android將每個(gè)進(jìn)程都放入一個(gè)“重要性層次”中,依據(jù)則是它其中運(yùn)行著的組件及其狀態(tài)。重要性***的進(jìn)程首先被消滅,然后是較低的,依此類推。重要性共分五層,依據(jù)重要性列表如下:

(1)前臺(tái)進(jìn)程是用戶操作所必須的, 任一時(shí)間下,僅有少數(shù)進(jìn)程會(huì)處于前臺(tái),僅當(dāng)內(nèi)存實(shí)在無(wú)法供給它們維持同時(shí)運(yùn)行時(shí)才會(huì)被殺死。

(2)可視進(jìn)程沒(méi)有前臺(tái)組件,但仍可被用戶在屏幕上所見(jiàn)??梢曔M(jìn)程依然被視為是很重要的,非到不殺死它們便無(wú)法維持前臺(tái)進(jìn)程運(yùn)行時(shí),才會(huì)被殺死。

(3)服務(wù)進(jìn)程是由startService() 方法啟動(dòng)的服務(wù),它不會(huì)變成上述兩類。盡管服務(wù)進(jìn)程不會(huì)直接為用戶所見(jiàn),但它們一般都在做著用戶所關(guān)心的事情(比如在后臺(tái)播放mp3 或者從網(wǎng)上下載東西)。所以系統(tǒng)會(huì)盡量維持它們的運(yùn)行,除非系統(tǒng)內(nèi)存不足以維持前臺(tái)進(jìn)程和可視進(jìn)程的運(yùn)行需要。

(4)背景進(jìn)程包含目前不為用戶所見(jiàn)的activity。這些進(jìn)程與用戶體驗(yàn)沒(méi)有直接的聯(lián)系,可以在任意時(shí)間被殺死以回收內(nèi)存供前臺(tái)進(jìn)程、可視進(jìn)程以及服務(wù)進(jìn)程使用。

(5)空進(jìn)程不包含任何活動(dòng)應(yīng)用程序組件。這種進(jìn)程存在的唯一原因是作為緩存以改善組件再次于其中運(yùn)行時(shí)的啟動(dòng)時(shí)間。系統(tǒng)經(jīng)常會(huì)殺死這種進(jìn)程以保持進(jìn)程緩存和系統(tǒng)內(nèi)核緩存之間的平衡。

Android會(huì)依據(jù)進(jìn)程中當(dāng)前活躍組件的重要程度來(lái)盡可能高的估量一個(gè)進(jìn)程的級(jí)別。比如說(shuō),如果一個(gè)進(jìn)程中同時(shí)有一個(gè)服務(wù)和一個(gè)可視的activity,則進(jìn)程會(huì)被判定為可視進(jìn)程,而不是服務(wù)進(jìn)程。

此外,一個(gè)進(jìn)程的級(jí)別可能會(huì)由于其它進(jìn)程依賴于它而升高。一個(gè)為其它進(jìn)程提供服務(wù)的進(jìn)程級(jí)別永遠(yuǎn)高于使用它服務(wù)的進(jìn)程。

4. 實(shí)現(xiàn)應(yīng)用程序開(kāi)機(jī)自動(dòng)啟動(dòng)

任何一個(gè)Android應(yīng)用程序要實(shí)現(xiàn)開(kāi)機(jī)自動(dòng)啟動(dòng), 必須做到如下兩點(diǎn):

1) 繼承BroadcastReceiver類,并實(shí)現(xiàn)onReceive()方法,在此方法中啟動(dòng)應(yīng)用程序。

2) 在應(yīng)用程序的AndroidManifest.xml文件中訂閱BOOT_COMPLETED消息,如下:

  1. <receiver android:name="HelloWorldStartupIntentReceiver" > 
  2.       <intent-filter> 
  3.        
  4. <action android:name="android.intent.action.BOOT_COMPLETED" /> 
  5.       </intent-filter> 
  6. </receiver> 

 

責(zé)任編輯:佚名 來(lái)源: 51CTO.com
相關(guān)推薦

2011-08-01 13:35:08

Android安全框架權(quán)限

2011-08-12 09:06:48

Android系統(tǒng)應(yīng)用程序

2011-09-06 13:56:43

李洋iOS安全機(jī)制

2011-11-03 09:24:57

李洋簽名

2011-08-22 08:53:17

Android啟動(dòng)過(guò)程李洋

2011-09-15 08:58:41

Android短信丟失技術(shù)原因

2012-07-16 10:21:48

Android進(jìn)程線程

2010-08-26 08:57:04

AndroidAndroid開(kāi)發(fā)

2012-07-23 13:22:42

Intent Filt安全Android

2010-01-19 11:21:20

51CTO駐站專家

2012-08-27 09:52:48

Android沙箱模型

2011-04-19 08:59:33

2011-09-22 09:51:41

2016-08-23 18:15:26

2012-01-11 16:02:56

Android 4.0Launcher源碼分析

2014-08-29 15:22:33

AppDynamics企業(yè)級(jí)應(yīng)用管理平臺(tái)

2012-10-29 09:40:24

云應(yīng)用集成云計(jì)算管理IaaS

2012-02-02 15:56:48

Android 4.0Launcher源碼分析

2012-02-13 12:47:41

Android 4.0Launcher源碼分析

2012-06-05 10:09:45

AndroidManiAndroidMani
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)