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();

       }

    }

};
复制代码

activity的四种启动模式区别_launchmode图文详解

Activity的launchMode详细分析 应用中的每一个Activity都是进行不同的事物处理。以邮件客户端为例,InboxActivity目的就是为了展示收件箱,这个Activity...
  • androidstar_cn
  • androidstar_cn
  • 2016年10月03日 23:55
  • 851

[Android开发]Activity的四种启动模式及其应用场景

启动模式(launchMode)在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用...
  • CodeEmperor
  • CodeEmperor
  • 2016年01月08日 11:39
  • 15610

彻底弄懂Activity四大启动模式

最近有几位朋友给我留言,让我谈一下对Activity启动模式的理解。我觉得对某个知识点的理解必须要动手操作才能印象深刻,所以今天写一篇博文,结合案例理解Activity启动模式。由于之前看过“区长”的...
  • mynameishuangshuai
  • mynameishuangshuai
  • 2016年05月24日 16:04
  • 59171

Activity四种启动模式说明

1,standard标准模式: 每次启动一个Activity都会重新创建一个实例,即调用Activity创建时的生命周期方法onCreate,onStart,onResume;被启动的Activity...
  • u011959433
  • u011959433
  • 2016年03月21日 15:54
  • 2142

带你深入理解Activity启动模式(LaunchMode)

我们知道默认情况下,当我们多次启动同一个activity时,系统会创建多个实例并把他们一个个放入任务栈,当我们按back键,这些activity又会一个个退出。在讲activity的launchmod...
  • sd_zhuzhipeng
  • sd_zhuzhipeng
  • 2016年05月10日 23:36
  • 5282

浅谈Activity的四种启动模式

本文主要聊聊Activity的四种启动模式,请看文章!
  • itluochen
  • itluochen
  • 2016年09月20日 19:31
  • 1525

Android学习之Activity的四种启动模式与特点

Acitivty的四种启动模式与特点activity有四种启动模式,分别为: standard singleTop singleTask singleInstance 可以和activity的fla...
  • u011726984
  • u011726984
  • 2015年10月27日 23:36
  • 2808

Activity四种启动模式详解

最近在学习《Android开发艺术探索》,所以对所学习到的知识做个总结,就算是做笔记吧。 Activity的启动模式目前有四种,分别是standard、singleTop、singleTask和si...
  • Mr_wzc
  • Mr_wzc
  • 2016年06月23日 20:16
  • 2677

Activity四种启动模式的利用场景

一.singleTask: 场景1: 需求说明:如果自己的客户端处于运行状态,按下Home键后台挂起。此时如果使用微信调起自己的客户端某 个页面,不做任何处理的情况下,按下回退或者当前Activi...
  • berber78
  • berber78
  • 2014年02月21日 16:42
  • 10476

Activity的四种启动模式及使用场景

standard、singleTop、singleTask、singleInstance 默认Activity为standard标准模式,多次启动同一个Activity时,系统会创建多个实例,在这种模...
  • Liu_yunzhao
  • Liu_yunzhao
  • 2017年10月16日 22:47
  • 807
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android中Activity的四种启动模式(lauchmode)
举报原因:
原因补充:

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