日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

详谈Activity生命周期函数调用时机

發布時間:2024/1/8 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详谈Activity生命周期函数调用时机 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

再談Activity生命周期(詳細)

@(Android基礎)[Android全程實錄讀書筆記]

Activity的3中狀態:

  • 激活: 完全顯示在界面上, 并且有焦點, 即正在與用戶交互
  • 暫停: 不完全顯示, 沒有焦點. 即被半透明或者其他Activity遮擋.
  • 停止: 完全不現實, 沒有焦點. 即完全被其他activity遮擋, 被壓入activity的棧中
  • Activity的7個生命周期方法:

  • onCreate()
  • onStart()
  • onResume()
  • onRestart()
  • onPause()
  • onStop()
  • onDestroy()
  • 其中:
    onCreate() 和 onDestroy() 對應
    onStart() 和 onStop() 對應
    onResume() 和 onPause() 對應
    onReStart(): 在 停止狀態到激活狀態時會被調用. 如果是暫停狀態到激活狀態則不會調用
    onSaveInstanceState(): 用來保存臨時狀態, 會在非主動, 從激活到暫停狀態會調用, 也就是說點擊back鍵主動退出是不會調用的, 但是點擊home鍵到停止狀態非主動會調用.

    來看幾個典型的例子:

  • 程序啟動:
    onCreate() -> onStart() -> onResume()
  • 程序結束: 點擊back鍵退出
    onPause() -> onStop() -> onDestroy()
  • 程序啟動后,點擊home鍵回到桌面:
    onPause() -> onSaveInstanceState() -> onStop()
    這個時候再進入:
    onRestart() -> onStart() -> onResume()
  • 程序啟動, 彈出一個對話框, 進度條是不會調用生命周期的
  • 程序啟動, 跳轉到第二個activity(全屏), 再跳轉回來. 生命周期效果和點擊home鍵到桌面是一樣的.
    如果第二個Activity的Theme被設置為對話框, 那么就會出現 暫停狀態, 生命周期為:
    onPause() -> onSaveInstanceState()
    恢復
    onResume()
  • 生命周期圖:

    還有幾個注意點:

  • onSaveInstanceState()是保存臨時狀態, 不會總被調用, 所以不能用它來保存持久性數據. onPause() , onStop(), onDestroy() 狀態的activity都可能隨時被系統回收, 所以最好在 onPause() 方法中保存在與用戶交互前更改的數據.
  • 關于 onSaveInstanceState() 和 onRestoreInstanceState(), 這兩個方法不一定是成對調用的. onSaveInstanceState() 會在activity容易在進入容易被系統回收的情況下調用. onRestoreInstanceState() 會在當activity已經被銷毀(這里的銷毀是activity在被系統自動回收的情況, 而非主動退出.) ,再次擊進入應用的時候. 例如在程序啟動后, 點擊home鍵, 這時activity會進入onStop(), 這個時候使用手機的內存清理, 系統會回收掉目前未顯示的所有Activity, 這時再重新啟動應用, 就會調用: onRestoreInstanceState().
    生命周期為: onCreate() -> onStart() -> onRestoreInstanceState() -> onRsume(). 所以其實我們還可以將: onRestoreInstanceState() 寫到 onCreate() 中效果也一樣. 都是從 savedInstanceState這個bundle中獲取數據.
  • 附上代碼

    http://download.csdn.net/detail/u013647382/9575872

    總結

    以上是生活随笔為你收集整理的详谈Activity生命周期函数调用时机的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。