Activity的生命周期
一.摘要
一个完整的Activity的生命周期有6个回调函数。
//创建Activity public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } //Activity快要变成可见的 @Override protected void onStart() { super.onStart(); } //Activity变成可见的,处于运行状态 @Override protected void onResume() { super.onResume(); } //其他Activity获得用户焦点,(Activity快要暂停了) @Override protected void onPause() { super.onPause(); } //Activity不再可见,处于停止状态 @Override protected void onStop() { super.onStop(); } //Activity快要被销毁了 @Override protected void onDestroy() { super.onDestroy(); } }
下面这张图很好的讲解了Activity的生命周期和上面说的三种生命期:
二. 实例
下面通过一个Demo来学习以下Activity的生命周期:Demo很简单,一共三个Activity,MainActivity和NormalActivity和DialogActivity。MainActivity里面有两个按钮,分别可以跳转到NormalActivity和DialogActivity。NormalActivity和DialogActivity的唯一区别就是DialogActivity指定了Activity的主题为Dialog,即在AndroidManifest文件里面注册后者多了一句
android:theme="@android:style/Theme.Dialog"
MainActivity:
public class MainActivity extends Activity { public static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG, "MainActivity_onCreate"); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); Button startNormalActivity = (Button) findViewById(R.id.start_normal_button); Button startDialogActivity = (Button) findViewById(R.id.start_dialog_button); startNormalActivity.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, NormalActivity.class); startActivity(intent); } }); startDialogActivity.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, DialogActivity.class); startActivity(intent); } }); } @Override protected void onStart() { super.onStart(); Log.d(TAG, "MainActivity_onStart"); } @Override protected void onResume() { super.onResume(); Log.d(TAG, "MainActivity_onResume"); } @Override protected void onPause() { super.onPause(); Log.d(TAG, "MainActivity_onPause"); } @Override protected void onStop() { super.onStop(); Log.d(TAG, "MainActivity_onStop"); } @Override protected void onDestroy() { super.onDestroy(); Log.d(TAG, "MainActivity_onDestroy"); } @Override protected void onRestart() { super.onRestart(); Log.d(TAG, "MainActivity_onRestart"); } }
NormalActivity:
public class NormalActivity extends Activity { public static final String TAG = "NormalActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG,"NormalActivity_onCreate"); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.normal_layout); } @Override protected void onStart() { super.onStart(); Log.d(TAG, "NormalActivity_onStart"); } @Override protected void onResume() { super.onResume(); Log.d(TAG, "NormalActivity_onResume"); } @Override protected void onPause() { super.onPause(); Log.d(TAG, "NormalActivity_onPause"); } @Override protected void onStop() { super.onStop(); Log.d(TAG, "NormalActivity_onStop"); } @Override protected void onDestroy() { super.onDestroy(); Log.d(TAG, "NormalActivity_onDestroy"); } @Override protected void onRestart() { super.onRestart(); Log.d(TAG, "NormalActivity_onRestart"); } }