<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                Activity的生命周期 一、Activity的生命周期 1)onCreate:表示Activity正在被創建,生命周期的第一個方法。 2)onRestart:表示Activity正在重新啟動。當前Activity從不可見重新變為可見狀態時,onRestart就會被調用。 3)onStart:表示Activity正在被啟動,即將開始,這時Activity已經可見了,但是還沒有出現在前臺,還無法和用戶交互。 4)onResume:表示Activity已經可見了,并且出現在前臺并開始活動。 5)onPause:表示Activity正在停止,緊接著onStop就會被調用。可以做一些存儲數據、停止動畫等工作,但不能太耗時。onPause必須先執行完,新Activity的onResume才會執行。 6)onStop:表示Activity即將停止,可以做一些稍微重量級的回收工作,同樣不能太耗時。 7)onDestroy:表示Activity即將被銷毀,是Activity生命周期中的最后一個回調,可以做一些回收工作和最終的資源釋放。 ![](https://box.kancloud.cn/2016-06-24_576cfa83c8e38.png) 注:透明的Activity不會回調onStop 二、異常情況下的生命周期分析 ![](https://box.kancloud.cn/2016-06-24_576cfa840ccf2.png) 1) 當系統配置發生改變之后,Activity會被銷毀,其onPause,(onSaveInstanceState),onStop,onDestroy均會被調用,同時由于Activity是在異常情況下終止的,系統會在onStop之前調用onSaveInstanceState來保存當前的Activity的狀態。 2) 當Activity被重新創建后,系統會調用onRestoreInstanceState,并且把Activity銷毀時onSaveInstanceState方法保存的Bundle對象作為參數同時傳遞給onRestoreInstanceState和onCreate方法。 從時序上來說,onRestoreInstanceState的調用時機在onStart之后。 3) 當系統內存不足時,系統也會按照上述優先級去殺死目標Activity所在的進程,并后續通過onSaveInstanceState和onRestoreInstanceState來存儲和恢復數據。`` 三、常見的應用問題分析 1.如果一個Activity在用戶可見時才處理某個廣播,不可見時注銷掉,那么應該在哪個生命周期的回調方法去注冊和注銷BroadcastReeiver呢? Activity的可見生命周期發生在onStart調用和onStop調用之間。在這段時間,用戶可以在屏幕上看到Activity并與其交互。因此,我們可以在onStart中注冊一個BroadcastReceiver以監控影響UI的變化,并在用戶無法看到您顯示的內容時在onstop中將其取消注冊。 為什么不能放在onPause方法中? 原因是onPause較容易被觸發,如彈出一個Dialog對話框時,Activity界面仍然是可見的,但onPause方法會被調用。所以,在保存數據時,為保證數據存儲的有效性可以放在onPause去做。在某些情況下,Activity走完onPause后,還未執行到onStop就被系統回收了。注意:onPause中要非常迅速地執行完所需操作,否則會影響下一個Activity的生命周期函數的調用。 從Activity A啟動Activity B時,它們的生命周期發生順序是: A.onPause() -> B.onCreate() -> B.onStart() -> B.onResume() -> B顯示,同時A在屏幕上不可見 -> A.onStop(). 由上面的流程可知,啟動第B的過程與停止A的過程存在重疊。 2.finish和onDestory方法區別? 先看看Activity的源碼注釋是怎么說的 ~~~ /** * Call this when your activity is done and should be closed. */ public void finish() {...} ~~~ 在你的activity動作完成的時候,或者是activity需要關閉的時候調用此方法。 也就是說,調用些方法之后,系統只是將該Activity從棧中移除了,但并沒有及時的調用onDestory方法,其還占用著內存資源。此時點擊手機上的back鍵,再也找不到這個Activity了,因為它已經移出了棧。 ~~~ /** * Perform any final cleanup before an activity is destroyed. This can * happen either because the activity is finishing (someone called * {@link #finish} on it, or because the system is temporarily destroying * this instance of the activity to save space. You can distinguish * between these two scenarios with the {@link #isFinishing} method. */ protected void onDestroy() {...} ~~~ 調用這個方法后,系統會銷毀這個Activity的實例在內存中占據的空間。重新進入該Activity時,系統會執行onCreate方法進行重新創建。 調試可以發現,執行finish會調用到onDestory方法,即 finish() -> onPause() -> onStop() -> onDestory()。 finish()方法用于主動結束一個Activity的生命周期,而onDestory()方法則是Activity生命周期的中最后一步,調用該方法后,系統會釋放此Activity之前占用的內存資源。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看