Android Activity生命週期簡介
来源:互联网 发布:局域网批量安装软件 编辑:程序博客网 时间:2024/05/22 02:28
作为最基础的知识点,还是写下来比较好。在网上看到一片不错的,转载了过来。
前面有提到何謂Activity: 最簡單的就是把Activity看成一個User Interface Program. 它會提供使用者一個互動式的介面功能. 當然一個activity通常不只一個UI, 所有的Activity在系統裏由Activity stack 所管理, 當一個新的Activity被執行後,它將會被放置到stack的最頂端,並且變成"running activity", 而之前的Activity原則上還是存在stack中,但不會是在foreground(前景)的情況.
一個Activity基本上有四個狀態 Active, Paused, Stopped, Dead:
Active (活動):
Active狀態是使用者啟動Application 或 Activity 後,Activity 在運行中的狀態.
在 Android 平台上, 一個時刻只會有一個 Activity 處於Active 或 Running 狀態。其他的 Activity 都處於未Dead, Stopped 或是Paused 的狀態.
Paused (暫停)
Paused狀態是當 Activity 暫時暗下來, 退到背景畫面的狀態. 例如當電話來時, 原本運行的 Activity 退到背景畫面. 新出現的介面元件蓋住了原來的 Activity 畫面.
Stopped (停止)
Stopped狀態是有其他 Activity 正在執行, 而這個 Activity 已經離開螢幕, 不再動作的狀態.
透過長按Home鍵, 可以叫出所有處於Stopped狀態的Application List(應用程式列表).
在Stopped狀態的 Activity,還可以透過 Notification 來喚醒。以後再說明 Notification.
Stopped狀態是有其他 Activity 正在執行, 而這個 Activity 已經離開螢幕, 不再動作的狀態.
透過長按Home鍵, 可以叫出所有處於Stopped狀態的Application List(應用程式列表).
在Stopped狀態的 Activity,還可以透過 Notification 來喚醒。以後再說明 Notification.
Dead/Inactive (已回收或未啟動)
Dead狀態是 Activity 尚未被啟動, 已經被手動終止, 或已經被系統回收的狀態.
要手動終止 Activity, 可以在程式中呼叫 finish 函式.
如果是被系統回收, 可能是因為記憶體不足, 系統根據記憶體不足時的回收規則, 將處於Stopped狀態的 Activity 所佔用的記憶體回收.
Dead狀態是 Activity 尚未被啟動, 已經被手動終止, 或已經被系統回收的狀態.
要手動終止 Activity, 可以在程式中呼叫 finish 函式.
如果是被系統回收, 可能是因為記憶體不足, 系統根據記憶體不足時的回收規則, 將處於Stopped狀態的 Activity 所佔用的記憶體回收.
下面的流程圖說明一個Activity運行的情況, 長方形代表callback methods(回呼函式), 可以做出想要處理的事情, 有顏色的部份就是實際Activity會處於的狀態.
上圖有三個主要 lifetime :
1. Entire lifetime: 一個Activity的Entire lifetime是由onCreate()開始, 一直到onDestroy()結束.
一個Activity可以把所有的資源設定寫在onCreate中, 一直到onDestroy()時再釋放出來.2. Visible lifetime: 一個Activity的Visible lifetime是指在onStart()到onStop()之間.
在這段時間內,使用者可以在螢幕上看見Activity, 要注意這個"Visible"是個形容, Activity不見得一定在foreground(前景)跟使用者直接互動.3. Foreground lifetime: 一個Foreground lifetime 指 onResume() 到 onPause() 之間. 這個時期的Activity是在其他的Activity的前面, 且可以直接跟使用者進行互動. 所以這段時期指的就是圖中的Activity is running.
簡單的總結幾個動作:
onDestory()通常都拿來把onCreate()時的資料做釋放的動作;
onPause()時把需要保存的資料保存;onResume()把保存的資料拿回來使用.
再歸納一般 Android Application遵循的動作流程:
一般啟動:
onCreate -> onStart -> onResume啟動一個 Activity 的基本流程是: 分配資源給這個 Activity(onCreate), 然後將 Activity 內容顯示到螢幕上(onStart), 在一切就緒後, 取得螢幕的控制權(onResume), 使用者可以開始使用這個程式。
呼叫另一個 Activity:
onPause(1) -> onCreate(2) -> onStart(2) - onResume(2) -> onStop(1)先凍結原本的 Activity, 再交出直接存取螢幕能力(onPause )的過程. 直到 Activity 2 完成一般啟動流程後, Activity 1 才會被停止.
回復原 Activity
onPause(2) -> onRestart(1) -> onStart(1) -> onResume(1) -> onStop(2) -> onDestroy(2)按 Back鍵可以回到原本的 Activity。
退出/結束
onPause -> onStop -> onDestroy如果程式中有直接呼叫 finish 函式來關閉 Activity的話, 系統會暫停(Pause), 停止(Stop)然後銷毀(Destroy)。
回收後再啟動
onCreate -> onStart -> onResume被回收掉的 Activity 一旦又重新被呼叫時,會像一般啟動一樣再次呼叫 Activity 的 onCreate 函式.
代码
- Android Activity生命週期簡介
- Android Activity 生命活动周期再验证
- (Android)Activity的生命的周期
- Android百日程序: Activity的生命期
- Android-Activity生命周期(生命,有始有终!)
- 两分钟让你彻底明白Android Activity生命
- Android开发中如何保证activity的生命活性!
- Activity的生命进程
- Activity生命流程
- Activity的生命期
- Activity 的生命週期
- Activity 的生命週期
- Activity与Fragment生命流程
- android service生命历程
- Android Fragment 生命周
- android生命后期图
- Activity生命机制与状态保存机制
- Activity生命期的代码含义
- 医院网络安全管理方案
- 溶解效果
- Flex4中使用HTTPService与后台交互绑定到DataGrid控件
- ASP.NET高效URL重写
- Centos 4.8 下JDK 1.6 的安装
- Android Activity生命週期簡介
- 凹凸笔试题目(嵌入式软件开发
- 配置emacs+slime+sbcl+sdl库
- 使用WebFOCUS的Visual Discovery建Dashboard的经验分享
- 基于屏幕像素抖动的PCF
- C++#define的用法(含特殊)
- zoj 2912 hdu 2376 Average distance 树形
- “Unable to find vcvarsall.bat”错误
- 哈佛校训