当前位置:   article > 正文

Activity的四种启动模式_singtop

singtop

第一种standrad:

  • android:launchMode=”standard”
    standard是默认的启动模式,即如果不指定launchMode属性,则自动就会使用这种启动模式。这种启动模式表示每次启动该Activity时系统都会为创建一个新的实例,并且总会把它放入到当前的任务当中。声明成这种启动模式的Activity可以被实例化多次,一个任务当中也可以包含多个这种Activity的实例。

第二种singleTop

  • singleTop是会检查栈顶元素是不是当前Activity,如果是的话就不创建新的实例,如果不是当前Activity的话就再次创建当前实例。startActivity(new Intent(CTestActivity.this,CTestActivity.class));
    比如说CTestActivity设置了加载方式为standrad,这句话执行10次,你就要按10次返回键才能返回到上一个界面,如果设置了加载方式是singleTop,你点一次返回键就好了。
  • 每次执行startActivity(new Intent(CTestActivity.this,CTestActivity.class))这句代码都会调用一下onNewIntent(Intent intent)方法,这个方法中的参数就是触发打开这个Activity的intent参数。
  • 注:生命周期方法是:onPause-onNewIntent。如果这个Activity不是在栈顶,就会再创建一下这个Activity的实例。应用范围主要是,应用发送了两条Notification,每次都是同一个Activity显示内容,就要设置launchMode了。

第三种singTask

  • 如果说singTop是查看当前栈顶是不是该Activity的实例,那么singTask就是搜索整个栈有没有该Activity实例了,如果有,就移除这个实例上面的所有其他Activity实例,显示这一个Activity的实例了。同样会调用onNewIntent()方法。
  • 注:一个APP默认只有一个任务栈,但是特殊情况下,比如说设置加载方式singleInstance或者设置flags为NEW_TASK了,就会新建一个任务栈了。

第四种singleInstance

  • Android群英传的例子举得比较好,比如说A程序想使用系统浏览器打开一个网页,B程序也想使用系统浏览器打开一个网页,这会浏览器就是一个单实例的。紧急呼叫界面也是单实例的。singInstance打开的界面是在一个单独的任务栈里面的。
  • 注:比如B是单实例的,A打开B,B在打开C,此时按下返回键返回到A了,A再按返回键返回到B了(因为AC所在的任务栈已经清空了)。因为B和AC不在一个任务栈中。
  • singTop和singleInstance类型的Activity调用startActivityForResult得不到返回数据。因为系统在FrameWork层就会认为不同Task(任务栈)之间不能互相传递数据。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/编程革命者/article/detail/60695
推荐阅读
相关标签
  

闽ICP备14008679号