android中Activity的四种启动模式(lauchmode)

原创 2015年07月06日 23:29:27

一、启动模式介绍

  启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置;

  启动模式有4种,分别为standard、singleTop、singleTask、singleInstance;

讲解启动模式之前,有必要先讲解一下“任务栈”的概念;

  任务栈

  每个应用都有一个任务栈,是用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity的出现顺序;比如Activity1-->Activity2-->Activity3,则任务栈为:

二、启动模式

(1)standard:每次激活Activity时(startActivity),都创建Activity实例,并放入任务栈;

(2)singleTop:如果某个Activity自己激活自己,即任务栈栈顶就是该Activity,则不需要创建,其余情况都要创建Activity实例;

(3)singleTask:如果要激活的那个Activity在任务栈中存在该实例,则不需要创建,只需要把此Activity放入栈顶,并把该Activity以上的Activity实例都pop;

(4)singleInstance:如果应用1的任务栈中创建了MainActivity实例,如果应用2也要激活MainActivity,则不需要创建,两应用共享该Activity实例;

 

 

SingTask的应用:

       可以用来退出整个应用。

       将主Activity设为SingTask模式,然后在要退出的Activity中转到主Activity,然后重写主Activity的onNewIntent函数,并在函数中加上一句finish。

 

 

附:

退出单个Activity方法:

      调用finish

  杀死该进程:killprocess(Process.mId)

      终止正在运行的虚拟机:system.exit()

 

退出整个应用:

  制造抛异常导致整个程序退出

  将所有的activity放入到一个list中,然后在需要退出的时候,将所有的activity,finish掉

  通过广播来完成退出功能

     通过广播来完成退出功能,具体实现过程是这样的:在每个Activity创建时(onCreate时)给Activity注册一个广播接收器,当退出时发送该广播即可。大概的代码如下:

复制代码
复制代码
@Override

protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       IntentFilter filter = new IntentFilter();

       filter.addAction("finish");

       registerReceiver(mFinishReceiver, filter);

       ……

}

private BroadcastReceiver mFinishReceiver = new BroadcastReceiver() {

    @Override

    public void onReceive(Context context, Intent intent) {

           if("finish".equals(intent.getAction())) {

              Log.e("#########", "I am " + getLocalClassName()

                     + ",now finishing myself...");

              finish();

       }

    }

};
复制代码

相关文章推荐

Android初学习 - Activity启动模式(lauchMode)总结

文章地址: http://blog.csdn.net/liuhe688/article/details/6754323 ----------------------------------...
  • cnmilan
  • cnmilan
  • 2016年04月20日 14:17
  • 245

Android总结篇系列:Activity启动模式(lauchMode)

launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task...

完全理解android Activity启动模式LauchMode (深入Activity与任务栈)

之前笔者已经讲过了LauchMode的作用,以及尽量避开栈的概念使用GIF图片的方式尽可能简单地阐述了一下Activity的启动模式,这篇文章就再次深入,好好讲一下在各种启动模式下,Activity与...

android Activity 四种启动模式例子

  • 2015年11月07日 14:25
  • 996KB
  • 下载

Activity启动模式(lauchMode)

本来想针对Activity中的启动模式写篇文章的,后来网上发现有人已经总结的相当好了,在此直接引用过来,并加上自己的一些理解,在此感谢原作者。 文章地址: http://blog.csdn...
  • zcxwww
  • zcxwww
  • 2016年04月14日 13:29
  • 185

安卓开发42:lauchMode Activity的启动模式

最近在做东西的时候,发现有时会出现两个相同的Activity,本来从Act_A跳转到Act_B,那么按下返回键的时候正常情况下会返回到Act_A,但按下返回键之后居然还是Act_B,这问题一开始还让我...
  • initphp
  • initphp
  • 2013年09月24日 14:46
  • 1379

Activity启动模式(lauchMode)

文章地址: http://blog.csdn.net/liuhe688/article/details/6407225 ----------------------------------...

LauchMode(Activity的启动模式)

什么是task: A task is a collection of activities that users interact with when performing a certain jo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android中Activity的四种启动模式(lauchmode)
举报原因:
原因补充:

(最多只允许输入30个字)