本文主要是介绍Activity的Launch Mode的理解以及相对应的生命周期的运行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Activity的Launche Mode有四种:
1、SingleTop
2、 SingleTask
3、SingleInstance
4、Standard;
该模式的设置是在ManiFest文件的<Activity>的属性设置的。
接下来就分析各个的效果以及生命周期的运行情况。
SingleTop
理解:
如果一个Activity的LaunchMode为singleTop的话,重新显示该Activity的时候会检查该Activity是否位于栈顶,如果是,则不需要重新创建该Activity,而是调用OnNewIntent()复用之前的Activity;如果没有位于栈顶的话,则不会调用OnNewIntent(),而是创建新的Activity。
生命周期:
如果位于栈顶:不会调用OnCreate(),而是调用OnNewIntent()----->OnResume();
如果没有位于栈顶:会重新创建Activity,生命周期如下:OnCreate()-------OnResume();
SingleTask
理解:
如果一个Activity的LaunchMode为singleTask的话,当一个Activity跳转到该Activity的话,系统会检查是否有该Activity的实例,如果没有的话,会创建一个新的;如果有的话,会先清空栈中该Activity之上的所有Activity,然后调用OnNewIntent()方法,复用之前已经创建的实例。
生命周期:
已经创建:不会调用OnCreate(),而是调用OnNewIntent()---->OnResume();
没有创建:OnCreate()----->OnResume();
应用:
如果想在在首页点击返回键的时候,要退出整个应用程序的时候,此时我们就可以把首页的LaunchMode设为该模式,每次回到首页的时候,首页都会位于栈顶,再按返回键返回的话就会退出整个应用程序。
SingleInstance
理解:
如果一个Activity的LaunchMode为singleInstance的话,启动该Activity的时候都会重新创建一个新的实例对象。
生命周期:
OnCreate()----->OnResume()
应用:
接收到一个新的推送信息,点击后打开一个Activity的功能就可以把该Activity设置为该模式。
之所以把生命周期也Debug出来,就是为了项目中数据刷新的实现,只有清楚理解生命周期,才能及时有效地更新数据,刷新页面。
但是我们在Activity的Intent里面同样可以设置Activity的LaunchMode,就是利用FLAG;
1、FLAG_ACTIVITY_NEW_TASK 功能类似于“SingleTask”
2、FLAG_ACTIVITY_SINGLE_TOP 功能类似于“SingleTop”
3、FLAG_ACTIVITY_CLEAR_TOP 该功能的效果前提是该Activity已经存在于回退栈里面,当跳转到该Activity的时候,会清楚该Activity上面所有的Activity。
这篇关于Activity的Launch Mode的理解以及相对应的生命周期的运行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!