Android中用于顯示的容器是Activity,一個Activity對應一個顯示頁面。
?
?
- Activity生命7方法
Activity對象運行與它自己的7個方法密切相關,從對象的創建到銷毀,這7個方法在Activity不同階段運行,具體的方法介紹如下表格所示:
?
Method |
Description |
Killable |
Next |
onCreate |
當啟動新的 Activity 的時候被調用 |
No |
onStart() |
onStart |
當 Activity 對用戶即將可見時調用 |
No |
onResume() or onStop() |
onRestart |
重新啟動 Activity 時調用 (此方法是重啟留在緩存中的 Activity ) |
No |
onStart() |
onResume |
當 Activity 界面可與用戶交互時調用 |
No |
onPause() |
onPause |
當系統要啟動一個其他的 activity 時調用,用于保存當前數據 |
Yes |
onResume() or onStop() |
onStop |
該 Activity 已經不可見時調用 |
Yes |
onRestart() or
|
onDestroy |
當 Activity 被 finish 或手機內存不足被銷毀的時候調用 |
Yes |
nothing |
?
?
?
- Activity LifeCycle
Google官方提供了Activity LifeCycle的運行圖,個人覺得官方提供的圖非常簡潔明了地介紹了Activity的運行周期:
如上圖所示,當啟動Activity1時, 首先調用 onCreate 方法初始化 Activity 的內容,當 Activity 顯示出來的時候調用 onStar 方法(此時 Activity 只能看不能點擊使用),當 Activity 可以被點擊時,則調用 onResume 方法;
如果新一個Activity2完全覆蓋原Activity1, 首先會讓 Activity1 執行 onPause 方法暫存 Activity1 的數據,然后依次執行 onCreate 、 onStart 、 onResume 方法啟動 Activity2, 最后因為 Activity1 會被 Activity2 完全覆蓋,所以會執行 Activity1 的 onStop 方法;
另一種情況,如果新Activity2未完全覆蓋Activity1(可能只是一個彈出層),則運行流程與上面說的執行流程相同,只是不會執行Activity1的onStop方法;
如果點擊手機上的“返回”按鈕,當前Activity對象會被銷毀,此時就會執行onDestory方法。
?
?
- Android 的 Task
Android 的 Task 是一個 Activity 棧,保存的是所有正運行的 application 的 Activity 數據, Task 中的 Activity 可以分屬于不同的 application, 一個 Activity 棧也可能是由一個或多個 Task 組成, Task 數據僅僅是臨時保存,若手機內存不足或長時間未使用該 application , Android 會自動銷毀 Task 部分 Activity 數據。
?
- onSaveInstanceState保存數據
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); if(savedInstanceState!=null && savedInstanceState.containsKey(ET_KEY)){ EditText et = (EditText)findViewById(R.id.et); et.setText(savedInstanceState.getString(ET_KEY)); } } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); EditText et = (EditText)findViewById(R.id.et); outState.putString(ET_KEY, et.getText().toString()); }?
?
我的百度文庫有關于Android Activity生命周期的ppt,免費下載,希望對大家有所幫助:
http://wenku.baidu.com/view/db19524ce518964bcf847cf9.html
?
附Activity生命周期例子,版本2.1
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
