让我们再来回顾一下上节课中分享的7个生命周期;分别是:onCreate()、onSart()、onResme()、onPause()、onStop()、onDestroy()、onRestart();
1.onCreate():初始化操作,所有活动都从这里启始。这里可以加载布局,或绑定事件等。
2.onSart():这个是活动变为不可见时调用。
3.onResme():这个方法一直处于栈的顶部,在和用户交互时调用,一直处于动行状态。
4.onPause():系统准备去启动或者恢复另一个活动时调用。这个方法以通常用来释放内存或保存数据,一定要快,不然会影响到栈顶部的活动运行。
5.onStop():这个方法是活动处于不可见时调用,它与onPause()的区别在于如果启动的活动是一个对话框式的,则onPause()会得到执行而onStop()的不会执行。
6.onDestroy():这个是活动被回收时调用,调用后活动就会被回收。
7.onRestart():重启处于停止状态的活动。
下面让我们来创建一个实例来检验一下上节课所学到的知识,这次我们重新创建一个项目:activtityLifecysletest
分别是dialog_Activity、NormalActivity、 MainActivity。其中dialog_Activity、NormalActivity分别有一个txtview控件,txt为活动的中文名。MainActivity中有两个按钮分别启动dialog_Activity、NormalActivity之用。在MainActivity注册两个活动的事件,然后调用几个回调函数来记录日志,让我们看清楚这7个方法的启动顺序。
public class MainActivity extends AppCompatActivity { public static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG, "onCreate"); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); Button startNormalActivty = (Button) findViewById(R.id.start_normal_activity); Button startDialogActivty = (Button) findViewById(R.id.start_dialog_activity); startNormalActivty.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this, NormalActivity.class); startActivity(intent); } }); startDialogActivty.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this, dialog_Activity.class); startActivity(intent); } }); } @Override protected void onStart() { super.onStart(); Log.d(TAG, "onStart服务开始"); } @Override protected void onResume() { super.onResume(); Log.d(TAG, "Resume活跃状态"); } @Override protected void onStop(){ super.onStop(); Log.d(TAG,"onStop活动停止") ; } @Override protected void onDestroy(){ super.onDestroy(); Log.d(TAG,"onDestroy活动销毁"); } @Override protected void onRestart() { super.onRestart(); Log.d(TAG,"onRestart活动重启") ; } }
以上是MainActivity的代码。两个活动的这里就不写了,小Y的键盘真心不好用。快被虐哭了。直接上图吧。