74.Android之四种启动模式

转载:http://www.cnblogs.com/meizixiong/archive/2013/07/03/3170591.html

一、启动模式介绍

  启动模式简单地说就是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();

       }

    }

};

  把上面的代码写在一个基类里面,这样,在需要退出的地方调用close,发送广播,每个Activity接收到广播后,就会将自己finish掉

时间: 2024-10-15 11:53:38

74.Android之四种启动模式的相关文章

Android开发学习之路--Activity之四种启动模式

后天终于可以回家了,马上就要过年了,趁着年底打酱油的模式,就多学习学习,然后记录记录吧.关于Activity已经学习了七七八八了,还有就是Activity的四种启动模式了,它们分别为,standard,singleTop,singleTask,singleInstance,根据名字也差不多可以理解这四种模式了: 1.standard:标准启动模式,默认情况下就是这个模式了,这个模式下启动的Activity会被多次实例化. 2.singleTop:这个模式下启动Activity的话,如果栈顶也是同

android 4种启动模式

在android里,有4种activity的启动模式,分别为: “standard” (默认) “singleTop” “singleTask” “singleInstance” 它们主要有如下不同: 1. 如何决定所属task “standard”和”singleTop”的activity的目标task,和收到的Intent的发送者在同一个task内,除非intent包括参数FLAG_ACTIVITY_NEW_TASK. 如果提供了FLAG_ACTIVITY_NEW_TASK参数,会启动到别的

Android 四种启动模式 已看晕

http://blog.csdn.net/zdw890412/article/details/7386314  //有点乱 http://www.cnblogs.com/fanchangfa/archive/2012/08/25/2657012.html http://www.2cto.com/kf/201403/284469.html //不错 http://blog.csdn.net/chonbj/article/details/11804153 //通俗 http://www.360doc

Android入门:Activity四种启动模式

Android入门:Activity四种启动模式 一.启动模式介绍 启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置: 启动模式有4种,分别为standard.singleTop.singleTask.singleInstance: 讲解启动模式之前,有必要先讲解一下“任务栈”的概念; 任务栈 每个应用都有一个任务栈,是用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity

Android:图解四种启动模式 及 实际应用场景解说

在一个项目中会包括着多个Activity,系统中使用任务栈来存储创建的Activity实例,任务栈是一种"后进先出"的栈结构.举个栗子,若我们多次启动同一个Activity.系统会创建多个实例依次放入任务栈中.当按back键返回时,每按一次,一个Activity出栈,直到栈空为止.当栈中无不论什么Activity.系统就会回收此任务栈. 上面这个样例中的Activity并没有设置启动模式,你会发现多次启动同一个Activity.而系统却创建了多个实例,白白浪费内存,这样的情况Andro

Android Activity的4种启动模式详解(示例)

转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5233269.html 先介绍下Android对Activity的管理,Android采用Task来管理多个Activity,当我们启动一个应用时,Android就会为之创建一个Task,然后启动这个应用的入口Activity(即<intent-filter.../>中配置为 MAIN和LAUNCHER的Activity). 因为Android并没有为Task提供API,因此我们无法真正去访问Task,只

Android Activity:四种启动模式,Intent Flags和任务栈(转自他人博客)

在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.那各个页面跳转关系如何决定呢?如果启动了顺序启动了ABCD的Activiy,如何从D调回到B呢?下面讲述一下Acitivity的四种启动模式.讲解启动模式之前,有必要先讲解一下“任务栈”的概念; 任务栈 每个应用都有至少一个任务栈,是用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity的出现顺序:比如Activity1-->Activity2-->Act

Android之Activity系列总结(三)--Activity的四种启动模式

一.返回栈简介 任务是指在执行特定作业时与用户交互的一系列 Activity. 这些 Activity 按照各自的打开顺序排列在堆栈(即返回栈,也叫任务栈)中. 首先介绍一下任务栈: (1)程序打开时就创建了一个任务栈, 用于存储当前程序的activity,所有的activity属于一个任务栈. (2)一个任务栈包含了一个activity的集合, 去有序的选择哪一个activity和用户进行交互:只有在任务栈栈顶的activity才可以跟用户进行交互. (3)任务栈可以移动到后台, 并且保留了每

Android之Activity的四种启动模式

当应用运行起来后就会开启一条线程,线程中会运行一个任务栈,当Activity实例创建后就会放入任务栈中.Activity启动模式的设置在AndroidManifest.xml文件中,通过配置Activity的属性android:launchMode=""设置. 1. Standared模式(默认) 我们平时直接创建的Activity都是这种模式的Activity,这种模式的Activity的特点是:只要你创建了Activity实例,一旦激活该Activity,则会向任务栈中加入新创建的