生命周期描述的是一个类 从创建(new出来)到死亡(垃圾回收)的过程中会执行的方法..
在这个过程中 会针对不同的生命阶段会调用不同的方法.
Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,
这些回调方法包括:onCreate onDestroy onStop onStart onResume onPause
其实这些方法都是两两对应的,
onCreate创建与onDestroy销毁;
onStart可见与onStop不可见;
onResume可编辑(即焦点)与onPause;
这6个方法是相对应的,那么就只剩下一个onRestart方法了,这个方法在什么时候调用呢?
答案就是:
在Activity被onStop后,但是没有被onDestroy,在再次启动此Activity时就调用onRestart(而不再调用onCreate)方法;
如果被onDestroy了,则是调用onCreate方法。
还有两个方法 onPostResume() 和 onPostCreate()这两个生命周期的方法.
在 onCreate(),方法之后调用onPostCreate()。
public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; @Override protected void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); Log.d (TAG, "onCreate: "); } public void to(View v){ Intent intent =new Intent (this,Main2Activity.class); startActivity (intent); } @Override protected void onRestart () { super.onRestart (); Log.d (TAG, "onRestart: "); } @Override protected void onStart () { super.onStart (); Log.d (TAG, "onStart: "); } @Override protected void onResume () { super.onResume (); Log.d (TAG, "onResume: "); } @Override protected void onPause () { super.onPause (); Log.d (TAG, "onPause: "); } @Override protected void onStop () { super.onStop (); Log.d (TAG, "onStop: "); } @Override protected void onDestroy () { super.onDestroy (); Log.d (TAG, "onDestroy: "); } }
MainActivity 会走以下方法
从 MainActivity 开启Main2Activity会走以下方法(MainActivity没有调用finish();)
以下是Main2Activity开启MainActivity的生命周期.
Main2Activity开启MainActivity 调用Finish()的 生命周期;public class Main2Activity extends AppCompatActivity implements View.OnClickListener { private static final String TAG = "Main2Activity"; private Button btn_edit; private Button btn_back; @Override protected void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.activity_main2); Log.d (TAG, "onCreate: "); initView (); } private void initView () { btn_edit = (Button) findViewById (R.id.btn_edit); btn_back = (Button) findViewById (R.id.btn_back); btn_edit.setOnClickListener (this); btn_back.setOnClickListener (this); } @Override public void onClick (View v) { switch (v.getId ()) { case R.id.btn_edit: finish (); break; case R.id.btn_back: startActivity (new Intent (Main2Activity.this, MainActivity.class)); break; } } @Override protected void onRestart () { super.onRestart (); Log.d (TAG, "onRestart: "); } @Override protected void onStart () { super.onStart (); Log.d (TAG, "onStart: "); } @Override protected void onResume () { super.onResume (); Log.d (TAG, "onResume: "); } @Override protected void onPause () { super.onPause (); Log.d (TAG, "onPause: "); } @Override protected void onStop () { super.onStop (); Log.d (TAG, "onStop: "); } @Override protected void onDestroy () { super.onDestroy (); Log.d (TAG, "onDestroy: "); } }