最近在项目测试的时候,发现自己对android的启动模式几乎不懂,所以专门花了些时间测试下。我讲得尽量简单些。(复杂的我也将不出来,呵呵)

1.standard : 当你不去设置launchMode属性时,默认为standard ,standard 表示只要启动了这个activity就会创建一个新的实例,位于栈顶,而原来的实例则被压栈。

验证方式:

android:launchMode="standard"

class buttonAclickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
Intent i = new Intent(ActivytA.this, ActivytA.class);

startActivity(i);
}
}

总是启动当前activity,点击5次,这时候存在6个该activity的实例,那么你再按返回键,需要返回6次才能退出程序,明白了吧


2.singleTop :当launchMode设置为singleTop时,其实和standard差不多,唯一差别就是每次创建新的实例,会去检测当前栈顶是不是要创建的实例,如果是则直接用栈顶的,不创建,反之创建。

验证方式:

android:launchMode="singleTop"

class buttonAclickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
Intent i = new Intent(ActivytA.this, ActivytA.class);

startActivity(i);
}
}

总是启动当前activity,点击5次,这时候只存在1个activity实例,按返回键,就直接退出程序了。简单吧。

如果在栈顶则依次调用onNewIntent(Intent intent),onRestart() ,onStart() ,onResume()


3.singleTask :当launchMode设置为singleTask 时,表示当前task只存在该activity的一个实例,不会有第二个,一山不容二虎,呵呵。

当重新启动该activity时,依次调用onNewIntent(Intent intent),onRestart() ,onStart() ,onResume()

如果使用这种模式,在传递数据时,注意在onNewIntent方法里处理,这里不做解释,你懂的。

注意:singleTask模式的Activity不管是位于栈顶还是栈底,再次运行这个Activity时,都会将它上面的activity干掉,下面的不会理会。

所以,当一个应用里面有多个activity设置singleTask,程序只认第一个属性为singleTask的activity,其它的无视。

举例:程序x里面有a,b,c三个activity都设置了singleTask,启动a,跳到b,再跳到c,此时三个实例都存在,a在栈底,此时从才跳到a,那么b,c就都被destroy了。


4.singleInstance :当launchMode设置为singleInstance 时,表示重新建立一个task,并且这个task只存在该activity的一个实例,如果你需要调用第三方activity时,比如google地图,当你停留在google地图上,点击home键出去,你再进来事实上这里还是当前activity,一个应用。比如导游应用启动地图Activity,实际上是在导游应用task栈之上singleInstance模式创建的(如果还没有的话,如果有就是直接显示它)一个新栈,当这个栈里面的唯一Activity,地图Activity回退的时候,只是把这个栈移开了,这样就看到导游应用刚才的Activity了;

更多相关文章

  1. 如何降低android应用程序的耗电量
  2. 将程序安装到SD卡
  3. android Java开发设计模式及在android中的应用解析
  4. Android solve设备(手机)旋转过程中出现程序中断问题
  5. android获取正在运行的应用程序
  6. 【Android 开发入门】使用Android模拟器预览调试程序
  7. Android的Handler Looper Message机制应用实例与详解(二)

随机推荐

  1. 13.Cocos2dx中解决iconv库的移植问题。
  2. 【转】Windows下设置Android模拟器上网
  3. Android(安卓)初级面试者拾遗(前台界面篇)
  4. Android(安卓)note1
  5. Android技术选型
  6. Android开发之NDK初体验
  7. Android(安卓)使用传感器
  8. Android绘制圆形图片的3个方法
  9. Android(安卓)好用的三方选择器 时间选择
  10. (六)Android开发进阶(转)