91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解Android中組件Activity的生命周期

發布時間:2021-10-09 11:22:31 來源:億速云 閱讀:120 作者:iii 欄目:開發技術

這篇文章主要講解了“如何理解Android中組件Activity的生命周期”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何理解Android中組件Activity的生命周期”吧!

目錄
  • 返回棧

  • Activity 狀態

    • 1. 運行狀態

    • 2. 暫停狀態

    • 3. 停止狀態

    • 4. 銷毀狀態

  • Activity 的生存期

    • onCreate()

    • onStart()

    • onResume()

    • onPause()

    • onStop()

    • onDestroy()

    • onRestart()

    • 完整生存期

    • 可見生存期

    • 前臺生存期

  • Activity 回收處理

    返回棧

    Android 中的 Activity 是可以層疊的,我們每啟動一個新的 Activity,就會覆蓋在原有的 Activity 之上,然后點擊 Back 鍵會銷毀最上面的 Activity,下面的一個 Activity 就會重新顯示出來

    其實 Android 是使用任務(task)來管理 Activity 的,一個任務就是一組存放在棧里的 Activity 的集合,這個棧也被稱作返回棧

    默認情況下,啟動一個新的 Activity,它就會在返回棧中入棧,并處于棧頂的位置。而每當我們按下 Back 鍵或調用 finish() 方法銷毀一個 Activity 時,處于棧頂的 Activity 就會出棧,前一個入棧的 Activity 就會重新處于棧頂的位置。系統總是會顯示處于棧頂的 Activity 給用戶

    Activity 狀態

    每個 Activity 在其生命周期中最多可能有四種狀態:

    1. 運行狀態

    當一個 Activity 位于返回棧的棧頂時,Activity 就處于運行狀態

    2. 暫停狀態

    當一個 Activity 不再處于棧頂位置,但仍然可見時,Activity 就進入了暫停狀態

    3. 停止狀態

    當一個 Activity 不再處于棧頂位置,并且完全不可見時,就進入了停止狀態

    4. 銷毀狀態

    一個 Activity 從返回棧中移除后就變成了銷毀狀態

    Activity 的生存期

    Activity 類中定義了七個回調方法,覆蓋了 Activity 生命周期的每一個環節:

    onCreate()

    它會在 Activity 第一次被創建時調用,可以在這個方法中完成 Activity 的初始化操作,比如加載布局、綁定事件等

    onStart()

    這個方法在 Activity 由不可見變為可見的時候調用

    onResume()

    這個方法在 Activity 準備好和用戶進行交互時調用,此時的 Activity 一定位于返回棧的棧頂,并且處于運行狀態

    onPause()

    這個方法在系統準備去啟動或者恢復另一個 Activity 的時候調用,我們通常會在這個方法將一些消耗 CPU 的資源釋放掉,以及保存一些關鍵數據,但這個方法的執行速度一定要快,不然會影響到新的棧頂 Activity 的使用

    onStop()

    這個方法在 Activity 完全不可見的時候調用,它和 onPause() 方法的主要區別在于,如果啟動的新的 Activity 是一個對話框式的 Activity,那么 onPause() 方法會得到執行,而 onStop() 方法并不會執行

    onDestroy()

    這個方法在 Activity 被銷毀之前調用,之后 Activity 的狀態將變為銷毀狀態

    onRestart()

    這個方法在 Activity 由停止狀態變為運行狀態之前調用,也就是 Activity 被重新啟動了

    以上七個方法中除了 onRestart() 方法,其他都是兩兩相對的,從而又可以將 Activity 分為以下三種生存期:

    完整生存期

    Activity 在 onCreate() 方法和 onDestroy() 方法之間所經歷的就是完整生存期。一般情況下,一個 Activity 會在 onCreate() 方法中完成各種初始化操作,而在 onDestroy() 方法中完成釋放內存的操作

    可見生存期

    Activity 在 onStart() 方法和 onStop() 方法之間所經歷的就是可見生存期。在可見生存期內,Activity 對于用戶總是可見的,即便有可能無法和用戶進行交互。我們可以通過這兩個方法合理地管理那些對用戶可見的資源。比如在 onStart() 方法中對資源進行加載,而在 onStop() 方法中對資源進行釋放,從而保證處于停止狀態的 Activity 不會占用過多內存

    前臺生存期

    Activity 在 onResume() 方法和 onPause() 方法之間所經歷的就是前臺生存期。在前臺生存期內,Activity 總是運行狀態,此時的 Activity 是可以和用戶進行交互的,我們平時看到的和接觸最多的就是這個狀態下的 Activity

    Activity 回收處理

    當一個 Activity 進入了停止狀態,是有可能被系統回收的。如果一個 Activity 由于系統內存不足而被回收,用戶再返回該 Activity 時,其實還是會正常顯示的,但這時并不會執行 onRestart() 方法,而是會執行 Activity 的 onCreate() 方法,因為 Activity 在這種情況下會被重新創建一次

    如果 Activity 存在臨時數據和狀態,比如文本輸入框已經輸入了一段文字,回來以后文字都沒了,那這是比較影響用戶體驗的。Activity 提供了一個 onSaveInstanceState() 回調方法,該方法可以保證在 Activity 被回收之前一定會被調用,可以通過這個方法來解決這個問題

    onSaveInstanceState() 方法會攜帶一個 Bundle 類型的參數,Bundle 提供了一系列的方法用于保存數據

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        var tempData = "Something you just typed"
        outState.putString("data_key", tempData)
    }

    數據保存以后,在 onCreate() 方法有一個 Bundle 類型參數,該參數帶有之前保存的全部數據,只需再通過相應的取值方法將數據取出即可

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        if (savedInstanceState != null) {
            val tempData = savedInstanceState.getString("data_key")
        }
    }

    感謝各位的閱讀,以上就是“如何理解Android中組件Activity的生命周期”的內容了,經過本文的學習后,相信大家對如何理解Android中組件Activity的生命周期這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    太湖县| 庆阳市| 孟连| 西贡区| 扶绥县| 平邑县| 嘉善县| 铁岭市| 泸定县| 伊川县| 盱眙县| 扎囊县| 黎城县| 金门县| 郑州市| 类乌齐县| 广灵县| 绍兴市| 巢湖市| 恩平市| 洱源县| 都兰县| 朔州市| 宣武区| 建平县| 黎城县| 张掖市| 礼泉县| 安龙县| 潮州市| 商都县| 道孚县| 上栗县| 萨嘎县| 建德市| 广河县| 信宜市| 陵川县| 旌德县| 罗江县| 昭苏县|