Android Activity Lifecycle(Finish)

    廣大博友,看過後幫忙頂頂,謝謝大家!!!

    轉載請註明: http://blog.csdn.net/richway2010/archive/2011/06/29/6574987.aspx

   【博主:各位博友,網友們,大家網上好!歡迎光臨本博客。 歡迎多多交流,多提意見,互相學習,互相進步,我們的口號是:好好學習,天天向上。】

    看過很多關於activity生命週期的文章,大多都只是講明一個圖例流程,並沒有把其中原理講清楚,下面加上個人理解,分析一下它的生命週期。

    跟其他手機平臺的應用程序一樣,Android的應用程序的生命週期是被統一掌控的,也就是說我們寫的應用程序命運掌握在別人(系統)的手裏,我們不能改變它,只能學習並適應它。
    簡單地說一下爲什麼是這樣:我們手機在運行一個應用程序的時候,有可能打進來電話發進來短信,或者沒有電了,這時候程序都會被中斷,優先去服務電話的基本功能,另外系統也不允許你佔用太多資源,至少要保證電話功能吧,所以資源不足的時候也就有可能被幹掉。

 

看圖:

 

對上圖分析:

1、啓動Activity執行的方法:onCreate()-->onStart()-->onResume()方法,此時程序處理運行狀態。

     方法原理:

     onCreate: 在這裏創建界面,做一些數據的初始化工作
     onStart: 到這一步變成用戶可見不可交互的
     onResume: 變成和用戶可交互的,(在activity棧系統通過棧的方式管理這些個Activity的最上面,運行完彈出棧,則回到上一個Activity)

2、結束Activity執行的方法:onPause()-->onStop()-->onDestory()方法,此時程序被銷燬。

     方法原理:

     onPause:到這一步是可見但不可交互 的,系統會停止動畫等消耗CPU 的事情,從上文的描述已經知道,應該在這裏保存你的一些數據,因爲這個時候你的程序的優先級降低,有可能被系統收回。在這裏保存的數據,應該在onResume裏讀出來,注意:這個方法裏做的事情時間要短,因爲下一個activity不會等到這個方法完成才啓動
     onstop:變得不可見 ,被下一個activity覆蓋了
     onDestroy:這是activity被幹掉前最後一個被調用方法了,可能是外面類調用finish方法或者是系統爲了節省空間將它暫時性的幹掉,可以用isFinishing()來判斷它,如果你有一個Progress Dialog在線程中轉動,請在onDestroy裏把他cancel掉,不然等線程結束的時候,調用Dialog的cancel方法會拋異常的。

3、onPause()-->onResume轉化原理

Activity可以經常性地在resumed和paused狀態之間切換,當activity處理運行狀態時,有新的activity運行到前臺,此時原activity將被壓入棧,當前activity處於棧頂。

 

4、閒置很長時間的activity-->到運行狀態過程

     onStop()-->onRestart()-->onStart()-->onResume()-->activity running

    

 

注:處於onPause,onstop, onDestroy,三種狀態下 activity都有可能會因爲其它應用需要用內存,而被系統幹掉。其它狀態不會結束。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章