學習android開發這麼久對於activity的生命週期還沒有仔細思考過,所以,我大致的把這些東西整理一下,希望通過這使自己理解的更透徹點吧!
首先看一下Activity生命週期圖和它的的四個階段
它的的四個階段
1. 開始Activity:在這個階段依次執行3個生命週期方法:onCreate()、onStart()和onResume()。
2. Activity失去焦點:如果在Activity獲得焦點的情況下進入其他的Activity,這時當前的Activity會失去焦點。在這一階段,會依次執行onPause()和onStop()方法。
3. Activity重新獲得焦點:如果Activity重新獲得焦點,會依次執行 3個生命週期方法:onRestart()、onStart()和onResume()。
4. 關閉Activity:當Activity被關閉時系統會依次執行3個生命週期方法:onPause()、onStop()和onDestroy()。
現在通過一個例子來了解它的生命周方法在四個階段的用法:
七個生命週期方法如下,它們的作用見下面示例方法註釋中
protected void onCreate(Bundle savedInstanceState)
protected void onStart()
protected void onResume()
protected void onPause()
protected void onStop()
protected void onRestart()
protected void onDestroy()
示例代碼:
package com.liu.activity;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MyActivity extends Activity {
private static final String lifeTag = "Activity生命週期";
//當Activity第一次被創建時調用,我們可以在這進行初始化操作
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.d(lifeTag,"---->oncreate()被執行");
}
//onStart()方法在Activity開始被執行時調用,它緊隨onCreate()方法之後調用
protected void onStart() {
super.onStart();
Log.d(lifeTag,"---->onStart()被執行");
}
//onResume()方法在Activity即將與用戶交互時調用
protected void onResume() {
super.onResume();
Log.d(lifeTag,"---->onResume()被執行");
}
//當Activity從stopped狀態啓動時會調用onRestart(),後面總是調用onStart()方法
protected void onRestart() {
super.onRestart();
Log.d(lifeTag,"---->onRestart()被執行");
}
//在一個Activity啓動另一個Activity時調用,它通常被用來持久化數據、停止動畫或其他耗費資源的動作,
//下一個Activity必須等待這個方法返回後在啓動,所以在這裏做過多的操作
protected void onPause() {
super.onPause();
Log.d(lifeTag,"---->onPause()被執行");
}
//onStop()方法在一個新的Activity啓動、其他的Activity切換到前臺、當天Activity被銷燬時都會被調用
protected void onStop() {
super.onStop();
Log.d(lifeTag,"---->onStop()被執行");
}
//Activitybe被銷燬時調用
protected void onDestroy() {
super.onDestroy();
Log.d(lifeTag,"---->onDestroy()被執行");
}
}
啓動程序調用的方法如下:
當按下撥號鍵使activity失去焦點調用的方法如下:
當按下返回鍵使Activity獲得焦調用的方法如下,:
關閉Avtivity時調用的方法如下: