首先四种启动模式大家应该都比较熟悉了 standard singleTop singleTask singleInstance
首先两个activity: activity01 activity02
简单的界面:
standard 下的模式比较简单就是正常的生命周期,这里就不再赘述了
Activity01的模式是standard:
1.Activity02的模式是singleTop:
01->02->02
复用的时候运行了onPause() onNewIntent()和onResume()函数。
2.Activity02的模式是singleTask:
01->02->02
和singleTop一样复用的时候运行了onPause() onNewIntent()和onResume()函数。
02>01>02
复用的时候运行了onNewIntent(),onStart(),onResume()
3.Activity02的模式是singleInstance:
02>01>02
复用的时候调用的是三个函数。onNewIntent(), onStart(), onResume()
综上所述,不管是singleTop singleTask singleInstance,
如果是相邻复用:onPause() onNewIntent()和onResume()
如果是相隔复用:onNewIntent(), onStart(), onResume()
4.特别注意:
actiity如果是通过getIntent初始化的数据, singleTop singleTask singleInstance 模式下复用,需要注意重写onNewIntent方法,在OnNewIntent中更新Intent, 如下:
/*
* 复用Activity时的生命周期回调
*/
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
initData();
initView();
}
//初始化数据
private void initData() {
Intent intent = getIntent();
mCourseID = intent.getStringExtra(COURSE_ID);
}