日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
在Android平臺(tái)下如何控制應(yīng)用程序生命周期

我們向很多朋友介紹過Android特有的虛擬機(jī):Dalvik虛擬機(jī)工作原理介紹。Android各個(gè)應(yīng)用在運(yùn)行時(shí)的進(jìn)程管理和內(nèi)存管理都是相對(duì)獨(dú)立的,Android應(yīng)用程序并不能控制自己的生命周期。本文將介紹如何控制應(yīng)用程序生命周期。

創(chuàng)新互聯(lián)建站專注于企業(yè)全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、武寧網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁(yè)面制作商城系統(tǒng)網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為武寧等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

一、前言

與大多數(shù)傳統(tǒng)的操作系統(tǒng)環(huán)境不同,Android應(yīng)用程序并不能控制自己的生命周期。所以應(yīng)用的各個(gè)組件(activity,Service……)就得時(shí)刻小心的監(jiān)聽?wèi)?yīng)用的狀態(tài)變化對(duì)它們的影響,防止在不適當(dāng)?shù)臅r(shí)機(jī)被終止掉。(可能會(huì)造成數(shù)據(jù)丟失哦)

在Android中每個(gè)應(yīng)用都具有獨(dú)立的進(jìn)程運(yùn)行在獨(dú)立的Dalvik(Android特有的虛擬機(jī))。各個(gè)應(yīng)用在運(yùn)行時(shí)的進(jìn)程管理和內(nèi)存管理都是相對(duì)獨(dú)立的。Android使用一種“侵占性”的方式管理系統(tǒng)資源,這意味著為了釋放資源給高優(yōu)先級(jí)的程序(通常情況下是正在與用戶進(jìn)行直接交互的程序),某些進(jìn)程及其宿主程序?qū)?huì)在沒有任何提示警告的情況下被無(wú)情的結(jié)束。

二、理解應(yīng)用的優(yōu)先級(jí)和進(jìn)程狀態(tài)

結(jié)束一些進(jìn)程是為了釋放回收資源,那么那些進(jìn)程會(huì)被結(jié)束?是A先結(jié)束還是B先結(jié)束呢?這決定于宿主應(yīng)用程序的優(yōu)先級(jí)了。一個(gè)應(yīng)用的優(yōu)先級(jí)等同于具有***優(yōu)先級(jí)的組件的優(yōu)先級(jí)。如果此刻兩個(gè)程序具有相同的優(yōu)先級(jí),那么曾經(jīng)哪個(gè)進(jìn)程處于低優(yōu)先級(jí)的時(shí)間較長(zhǎng),就會(huì)被結(jié)束掉。進(jìn)程的優(yōu)先級(jí)受到進(jìn)程間附屬關(guān)系的影響,比如A應(yīng)用依賴的Service或者Content Provider是由B應(yīng)用提供的,那么B將會(huì)具有更高的優(yōu)先級(jí)。所有的Android應(yīng)用都會(huì)遺留在內(nèi)存中運(yùn)行,直到系統(tǒng)需要釋放回收資源才會(huì)被結(jié)束掉。

 

圖示:各種進(jìn)程及其對(duì)應(yīng)的優(yōu)先級(jí)

Activity Process 活動(dòng)進(jìn)程是其宿主程序更用戶直接交互的組件,Android會(huì)嘗試通過回收各種資源來保證其運(yùn)行狀態(tài)。此類進(jìn)程數(shù)量少,通常是***被結(jié)束掉的。

活動(dòng)進(jìn)程包含下面幾種:

Activity處于激活狀態(tài),也就是說處于foreground,接收響應(yīng)用戶事件;

Activities, Services, or Broadcast Receivers 正在執(zhí)行處理OnReceive 事件;

Services 正在執(zhí)行處理 onStart, onCreate, or onDestroy 事件.

Visible Process 可視化,但是不處于活動(dòng)狀態(tài)的Activity。它們不處于foreground也不接受響應(yīng)用戶事件。這中情況發(fā)生在Activity有部分被覆蓋了(比如我們點(diǎn)擊A里面的一個(gè)按鈕,彈出一個(gè)Dialog,此時(shí)A就變成一個(gè)可視進(jìn)程)。可視進(jìn)程同樣很少,只有在極端的情況下,為了保證Activity Process的運(yùn)行才會(huì)被結(jié)束掉。

Started Service Process 注意,是啟動(dòng)后的服務(wù)進(jìn)程。服務(wù)進(jìn)程需要在沒有可視化界面的情況下持續(xù)運(yùn)行,因?yàn)榉?wù)沒有和用戶直接交互。它們依然被認(rèn)為是前臺(tái)進(jìn)程,只有當(dāng)Visible和Activity Process需要資源的時(shí)候才會(huì)被結(jié)束。

Background Process 一個(gè)進(jìn)程附屬在不可視的Activity 也沒有任何啟動(dòng)的服務(wù)進(jìn)程就變成了后臺(tái)進(jìn)程。通常情況下Android里面會(huì)有一大堆后臺(tái)進(jìn)程,Android用 last-seen-first-killed 這種方式來結(jié)束此類進(jìn)程,從而為foreground進(jìn)程提供資源。

Empty Process 為了改善整個(gè)系統(tǒng)的性能,Android會(huì)在內(nèi)存中保留已經(jīng)結(jié)束生命周期的應(yīng)用程序。Android保留這些緩存為了是應(yīng)用能夠快速啟動(dòng)。它們將會(huì)按照一貫的情況被結(jié)束掉。

綜上所述,正確的組織應(yīng)用程序,確保穩(wěn)定運(yùn)行,防止運(yùn)行中途被終止是非常重要的。

 

【編輯推薦】

  1. Nexus One作為Android測(cè)試機(jī)型
  2. Android平臺(tái)添新玩意 PHP將實(shí)現(xiàn)應(yīng)用
  3. Google發(fā)布Android 2.2版本 超20項(xiàng)重要改動(dòng)

當(dāng)前名稱:在Android平臺(tái)下如何控制應(yīng)用程序生命周期
分享URL:http://m.5511xx.com/article/copodjc.html