一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Android系統(tǒng)Activity 的狀態(tài)

 caorr1980 2014-06-14

Activity 的狀態(tài)

Android 的虛擬機(VM)執(zhí)行Activity時主要有四種狀態(tài):

· Active (活動)

· Paused (暫停)

· Stopped (停止)

· Dead (已回收或未啟動)

Active (活動)

Active」狀態(tài)是使用者啟動應用程式或Activity 后,Activity 運行中的狀態(tài)。

Android 平臺上,同一個時刻只會有一個Activity 處于活動(Active)或運行(R??unning)狀態(tài)。 其他的Activity 都處于未啟動(Dead)、停止(Stopped)、或是暫停(Pause)的狀態(tài)。

Paused (暫停)

Paused」狀態(tài)是當Activity 暫時暗下來,退到背景畫面的狀態(tài)。

當我們使用Toast、 AlertDialog 、或是電話來了時,都會讓原本運行的Activity退到背景畫面。 新出現(xiàn)的Toast、 AlertDialog等介面元件蓋住了原來的Activity畫面。 Activity 處在「Paused」狀態(tài)時,使用者無法與原Activity 互動。

Stopped (停止)

Stopped」狀態(tài)是有其他Activity 正在執(zhí)行,而這個Activity 已經(jīng)離開螢幕,不再動作的狀態(tài)。

透過長按「Home」鈕,可以叫出所有處于「Stopped」狀態(tài)的應用程式列表。

在「Stopped」狀態(tài)的Activity,還可以透過「Notification」來喚醒。 「Notification」會在后面章節(jié)中解說。

Dead (已回收或未啟動)

Dead」狀態(tài)是Activity 尚未被啟動、已經(jīng)被手動終止,或已經(jīng)被系統(tǒng)回收的狀態(tài)。

要手動終止Activity,可以在程式中呼叫「finish」函式。 我們在加入選單一章中已經(jīng)提到過了。

如果是被系統(tǒng)回收,可能是因為記憶體不足了,所以系統(tǒng)根據(jù)記憶體不足時的回收規(guī)則,將處于「Stopped」狀態(tài)的Activity 所占用的記憶體回收。

記憶體不足時的行為

記憶體不足時,Dalvik 虛擬機會根據(jù)其記憶體回收規(guī)則來回收記憶體:

先回收與其他Activity Service/Intent Receiver 無關的行程(即優(yōu)先回收獨立的Activity)

再回收處于「Stopped」狀態(tài)的其他類型Activity(在背景等待的Activity)。 最久沒有使用的Activity 優(yōu)先回收(比較官方的說法是"根據(jù)LRU 演算法..."

還不夠? 回收Service 行程

快不行啦,關掉可見的Activity/行程

關閉當前的Activity

當系統(tǒng)缺記憶體缺到開始「4. 關掉可見的Activity/行程」時,大概我們換機子的時機也早該到啦!

程序中Activity的七個狀態(tài)

onCreate()onStart(),onResume(),onPause(),onStop(),onRestart(),onDestroy()

上面的七個狀態(tài)又可以歸納成三組:

1. 資源分配(Create/Destroy)

完整的Activity 生命周期由「Create」狀態(tài)開始,由「Destroy」狀態(tài)結束。 建立(Create)時分配資源,銷毀(Destroy)時釋放資源。

2. 可見與不可見(Start/ReStart/Stop)

Activity 運行到「Start」狀態(tài)時,就可以在螢幕上看到這個Activity。 相反地??,當Activity 運行到「Stop」狀態(tài)時,這個Activity 就會從螢幕上消失。

當使用者按下Back 按鈕回到上一個Activity 時,會先到Restart 狀態(tài),再到一般的Start 狀態(tài)。

3. 使用者能否直接存取螢幕(Resume/Pause

當有個Toast、 AlertDialog 、簡訊、電話等訊息亂入時,原來的Activity會進入「Pause」狀態(tài),暫時放棄直接存取螢幕的能力,被中斷到背景去,將前景交給優(yōu)先級高的事件。 當這些優(yōu)先級高的事件處理完后,Activity 就改進入「Resume」狀態(tài),此時又直接存取螢幕。

Activity 運作流程

由實際運行的記錄來看,我們可以歸納出所有Android 應用程式都遵循的動作流程:

一般啟動

 onCreate -> onStart -> onResume 

啟動一個Activity 的基本流程是:分配資源給這個ActivityCreate 狀態(tài)),然后將Activity 內(nèi)容顯示到螢幕上(Start 狀態(tài))。 在一切就緒后,取得螢幕的控制權(Resume 狀態(tài)),使用者可以開始使用這個程式。

呼叫另一個Activity

 onPause(1) -> onCreate(2) -> onStart(2) - onResume(2) -> onStop(1) 

這是個先凍結原本的Activity,再交出直接存取螢幕能力(Pause 狀態(tài))的過程。 直到Activity 2 完成一般啟動流程后,Activity 1 才會被停止。

回原Activity

 onPause(2) -> onRestart(1) -> onStart(1) -> onResume(1) -> onStop(2) -> onDestroy(2) 

Back 按鈕可以回到原本的Activity

退出結束

 onPause -> onStop -> onDestroy 

如果程式中有直接呼叫「finish」函式來關閉Activity的話,系統(tǒng)假設我們很確定我們在做什么,因此會直接跳過先凍結(Freeze)的階段,暫停(Pause),停止(Stop),然后銷毀(Destroy)

回收后再啟動

 onCreate -> onStart -> onResume 

 

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    蜜桃臀欧美日韩国产精品| 成人精品视频在线观看不卡| 综合久综合久综合久久| 日本最新不卡免费一区二区| 99久热只有精品视频免费看| 国产毛片不卡视频在线| 观看日韩精品在线视频| 99精品国产一区二区青青| 日韩中文字幕欧美亚洲| 国产精品国产亚洲区久久| 少妇肥臀一区二区三区| 91久久国产福利自产拍 | 国产成人精品资源在线观看| 午夜直播免费福利平台| 国产综合香蕉五月婷在线| 亚洲天堂精品1024| 久久一区内射污污内射亚洲 | 日本 一区二区 在线| 国产成人亚洲综合色就色| 日本中文在线不卡视频| 国产精品亚洲综合天堂夜夜| 国产精品久久精品毛片| 大尺度剧情国产在线视频| 日韩性生活视频免费在线观看| 亚洲午夜福利视频在线| 欧美日韩精品久久亚洲区熟妇人 | 欧美日韩精品综合一区| 国产精品一区二区成人在线| 亚洲男人的天堂色偷偷| 午夜福利国产精品不卡| 精品一区二区三区三级视频 | 黄色国产自拍在线观看| 国自产拍偷拍福利精品图片| 亚洲二区欧美一区二区| 五月婷婷六月丁香在线观看| 欧美黄色黑人一区二区| 粉嫩一区二区三区粉嫩视频| 福利新区一区二区人口| 91亚洲精品综合久久| 国产精品香蕉在线的人| 高清一区二区三区四区五区 |