說到Activity的生命周期测秸,我的第一反應(yīng)就是onCreate()
疤估、onStart()
灾常、onResume()
、onPause()
做裙、onStop()
岗憋,onDestory()
和onRestart()
這 7 個(gè)生命周期方法肃晚。不過今天看前輩代碼的時(shí)候碰到他重寫了onPostCreate
方法锚贱,特此做個(gè)筆記。
首先关串,用一個(gè)Demo
先將他們執(zhí)行順序打印出來:
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: ");
}
}
打印結(jié)果:
可以看到拧廊,其順序是這樣的:
onContentChanged
–> onCreate
–> onStart
–> onPostCreate
–> onResume
–> onPostResume
–> onPause
–> onStop
–> onDestroy
下面來分別解釋這三個(gè)方法的含義:
-
onContentChanged
當(dāng)Activity
的布局改動(dòng)時(shí),即setContentView()
或者addContentView()
方法執(zhí)行完畢時(shí)就會(huì)調(diào)用該方法晋修, 例如吧碾,Activity
中各種View
的findViewById()
方法都可以放到該方法中。 -
onPostCreate
墓卦、onPostResume
onPostCreate
方法是指onCreate
方法徹底執(zhí)行完畢的回調(diào)倦春,onPostResume
類似,這兩個(gè)方法官方說法是一般不會(huì)重寫落剪,現(xiàn)在知道的做法也就只有在使用ActionBarDrawerToggle
的使用在onPostCreate
需要在屏幕旋轉(zhuǎn)時(shí)候等同步下狀態(tài)睁本,Google
官方提供的一些實(shí)例就是如下做法:
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
關(guān)于Activity常見的 7 個(gè)生命周期可查看我的另外一篇文章:Android四大組件之Activity,其次Activity
在異常情況下還會(huì)涉及到onSaveInstanceState()
和onRestoreInstanceState()
兩個(gè)方法忠怖,在該文也有講到呢堰。
參考文章:Activity生命周期中三個(gè)不常用的方法:onContentChanged,onPostCreate凡泣,onPostResume