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

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