Activity的四种启动模式
1.standard:默认启动模式,每次启动Activity时都会创建一个新的Actiity,并放入任务栈。
2.singleTop:栈顶复用,当任务栈的栈顶正好存在该Activity的实例,就会重用该实例,否则重新创建新的实例放入栈顶。
3.singleTask:全栈复用,当任务栈中存在该Activity的实例,就会重用该实例(会调用实例的onNewIntent)。重用时,会让该实例回到栈顶,在他之上的实例将会被移除任务栈。
4.singleInstance:将启动的Activity放在一个新创建的任务栈中,并让多个应用共享栈中该Activity的实例。
当一个应用中的Activity供多种方式调用启动,但是希望任务栈中只有一个Activity实例。这样就需要将这个Activity launchMode设置为singleTask。第一次打开会执行onCreate--onStart--onResume,之后如果该Activity没有被destroy,重新打开执行onNewIntent--onRestart--onStart--onResume。
当调用到onNewIntent(intent)的时候,需要在onNewIntent()中使用setIntent(intent)赋值给Activity的Intent.否则,后续的getIntent()都是得到老的Intent。
Activity 生命周期
打开一个Activity:onCreate---onStart--onResume
back键返回:onPause--onStop--onDestory
按home键或者打开其他Activity:onPause--onStop 再次打开 onReStart--onStart--onResume
打开Activity样式的弹框:onPause
Activity中打开一个普通的对话框,不会对该Activity的生命周期有影响。