Activity生命周期中三个不常用的方法:onContentC
2019-06-04 本文已影响16人
12313凯皇
说到Activity的生命周期,我的第一反应就是onCreate()
、onStart()
、onResume()
、onPause()
、onStop()
,onDestory()
和onRestart()
这 7 个生命周期方法。不过今天看前辈代码的时候碰到他重写了onPostCreate
方法,特此做个笔记。
首先,用一个Demo
先将他们执行顺序打印出来:
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: ");
}
@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: ");
}
@Override
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
Log.d(TAG, "onPostCreate: ");
}
@Override
protected void onPostResume() {
super.onPostResume();
Log.d(TAG, "onPostResume: ");
}
@Override
public void onContentChanged() {
super.onContentChanged();
Log.d(TAG, "onContentChanged: ");
}
}
打印结果:
可以看到,其顺序是这样的:
onContentChanged
–> onCreate
–> onStart
–> onPostCreate
–> onResume
–> onPostResume
–> onPause
–> onStop
–> onDestroy
下面来分别解释这三个方法的含义:
-
onContentChanged
当Activity
的布局改动时,即setContentView()
或者addContentView()
方法执行完毕时就会调用该方法, 例如,Activity
中各种View
的findViewById()
方法都可以放到该方法中。 -
onPostCreate
、onPostResume
onPostCreate
方法是指onCreate
方法彻底执行完毕的回调,onPostResume
类似,这两个方法官方说法是一般不会重写,现在知道的做法也就只有在使用ActionBarDrawerToggle
的使用在onPostCreate
需要在屏幕旋转时候等同步下状态,Google
官方提供的一些实例就是如下做法:
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
关于Activity常见的 7 个生命周期可查看我的另外一篇文章:Android四大组件之Activity,其次Activity
在异常情况下还会涉及到onSaveInstanceState()
和onRestoreInstanceState()
两个方法,在该文也有讲到。
参考文章:Activity生命周期中三个不常用的方法:onContentChanged,onPostCreate,onPostResume