launch mode 应用场景

标准模式 一调用startActivity()方法就会产生一个新的实例。

SingleTop:使用场景:浏览器的书签;通讯消息聊天界面。

如果已经有一个实例位于activity栈顶,就不产生新的实例,而只是调用activity中的newInstance()方法,如果不位于栈顶,会产生一个新的实例。

SingleTask:使用场景:某个Activity当做主界面的时候。

会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。


SingleInstance:使用场景:比如浏览器BrowserActivity很耗内存,很多app都会要调用它,这样就可以把该Activity设置成单例模式。比如:闹钟闹铃。

这个和singleTask基本一样,只有一个区别:在这个模式下的activity实例所处的task中,只能有这个activity实例,不能有其他实例。



activity的四种状态:Running状态,Paused状态,Stopped状态,Killed(被杀死的,断开的)状态。

Running状态:一个新的Activity启动入栈后,它在屏幕最前端处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。(onCreaetonStartonResume
Paused
状态:当Activity被另一个透明或者Dialog样式的Activity覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,它仍然可见,但它已经失去了焦点故不可与用户交互。
Stopped
状态:当Activity不可见时,Activity处于Stopped状态。当Activity处于此状态时,一定要保存当前数据和当前的UI状态,否则一旦Activity退出或关闭时,当前的数据和UI状态就丢失了。可以重写onSaveInstanceState()方法,通过他的bundle对象,保持数据,然后在下次启动中的创建方法中拿到数据。代码:savedInstanceState.getString("temp");
Killed
状态:Activity被杀掉以后或者被启动以前处于Killed状态。这时Activity已从Activity堆栈中移除,需要重新启动才可以显示和使用。

4种状态中,Running状态和Paused状态是可见的,Stopped状态和Killed状态是不可见的。


onStart onResume 的区别:onStartactivity界面被显示出来的时候执行的;onStart通常就是onStop(也就是用户按下了home键,activity变为后台后,activity不可见)之后用户再切换回这个activity就会调用onRestart()而后调用onStart()
onResume
是当该activity与用户能进行交互时被执行;onResumeonPause(通常是当前的acitivty被暂停了,比如被另一个透明或者Dialog样式的Activity覆盖了)之后dialog取消,activity回到焦点状态,调用onResume()



猜你喜欢

转载自blog.csdn.net/he3527/article/details/77618712