【Android】Activity生命週期研究

來源:互聯網
上載者:User

標籤:tle   執行   use   ima   生命週期   resume   out   public   .com   

1. 為什麼研究Activity什麼周期
  • Activity是Android四大組件之一,是Android人必須要深刻理解的基礎內容之一。
  • 可以提高我們對相關問題的解決能力。
  • 對一個問題如果不能深入理解,總覺得不踏實。
2. Activity生命週期詳解 2.1 Activity生命週期圖解

是Android開發官網的原圖,清晰表達了Activity生命週期中每個方法所處位置及調用流程。

對Activity的執行流程表達很到位,但是對每個方法在執行時,我們的裝置處於一種什麼狀態,其中注釋表達的不是很細緻,有待進一步深入研究。

2.2 Activity生命週期核心方法詳解

下表是Android官網對Activity生命週期中各個方法的詳解。

註:通過上面表格中的資訊描述我們不難發現一下幾點:

  • 當Activity調用完onResume()方法後Activity就將處於可見狀態,可以與使用者互動了。
  • onStop()方法是在Activity完全不可見時才調用的。
  • 當調用完onPause()方法後Activity是可以被殺掉的,這也就意味著可能不會調用 onStop()和 onDestroy()。因此,您應該在調用 onPause()向存放裝置寫入至關重要的持久性資料(例如使用者編輯)。
  • 應該對 onPause()調用期間必須保留的資訊有所選擇,因為該方法中的任何阻止過程都會妨礙向下一個 Activity 的轉變並拖慢使用者體驗。
3. 通過一個生命週期執行個體來加深一下印象 3.1 執行個體代碼

有兩個Activity,MainActivity和TwoActivity,其代碼如下,後面將執行幾個常見的操作,看看其生命週期流程究竟如何運行。

public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        findViewById(R.id.btn_onClick).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                startActivity(new Intent(MainActivity.this, TwoActivity.class));            }        });        Log.i("info", "MainActivity --> onCreate()");    }    @Override    protected void onStart() {        super.onStart();        Log.i("info", "MainActivity --> onStart()");    }    @Override    protected void onResume() {        super.onResume();        Log.i("info", "MainActivity --> onResume()");    }    @Override    protected void onRestart() {        super.onRestart();        Log.i("info", "MainActivity --> onRestart()");    }    @Override    protected void onPause() {        super.onPause();        Log.i("info", "MainActivity --> onPause()");    }    @Override    protected void onStop() {        super.onStop();        Log.i("info", "MainActivity --> onStop()");    }    @Override    protected void onDestroy() {        super.onDestroy();        Log.i("info", "MainActivity --> onDestroy()");    }}
public class TwoActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_two_layout);        Log.i("info", "TwoActivity --> onCreate()");    }    @Override    protected void onStart() {        super.onStart();        Log.i("info", "TwoActivity --> onStart()");    }    @Override    protected void onRestart() {        super.onRestart();        Log.i("info", "TwoActivity --> onRestart()");    }    @Override    protected void onResume() {        super.onResume();        Log.i("info", "TwoActivity --> onResume()");    }    @Override    protected void onPause() {        super.onPause();        Log.i("info", "TwoActivity --> onPause()");    }    @Override    protected void onStop() {        super.onStop();        Log.i("info", "TwoActivity --> onStop()");    }    @Override    protected void onDestroy() {        super.onDestroy();        Log.i("info", "TwoActivity --> onDestroy()");    }}
3.2 啟動MainActivity

結果預測:

MainActivity --> onCreate()

MainActivity --> onStart()

MainActivity --> onResume()

真實結果:

果然一致。

3.3 MainActivity到TwoActivity

結果預測:

MainActivity –> onPause()

TwoActivity –> onCreate()

TwoActivity –> onStart()

TwoActivity –> onResume()

MainActivity –> onStop()

真實結果:

和預測順序一致。

3.4 從TwoActivity返回到MainActivity

結果預測:

TwoAcitvity –> onPause()

MainActivity –> onRestart()

MainActivity –> onStrat()

MainActivity –> onResume()

TwoActivity –> onStop()

TwoActivity –> onDestroy()

真實結果:

順序一致,證明理論是正確的。

3.5 從MainActivity返回案頭

結果預測:

MainActivity –> onPause()

MainActivity –> onStop()

MainActivity –> onDestroy()

真實結果:

【Android】Activity生命週期研究

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.