服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Android - Android入门之Activity四种启动模式(standard、singleTop、singleTask、singleInstance)

Android入门之Activity四种启动模式(standard、singleTop、singleTask、singleInstance)

2021-04-23 15:29Android开发网 Android

当应用运行起来后就会开启一条线程,线程中会运行一个任务栈,当Activity实例创建后就会放入任务栈中。Activity启动模式的设置在AndroidManifest.xml文件中,通过配置Activity的属性android:launchMode=""设置

当应用运行起来后就会开启一条线程,线程中会运行一个任务栈,当activity实例创建后就会放入任务栈中。activity启动模式的设置在androidmanifest.xml文件中,通过配置activity的属性android:launchmode=""设置。

一、启动模式介绍

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

  启动模式有4种,分别为standard、singletop、singletask、singleinstance;

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

  任务栈

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

Android入门之Activity四种启动模式(standard、singleTop、singleTask、singleInstance)

二、启动模式

(1)standard模式(默认):每次激活activity时(startactivity),都创建activity实例,并放入任务栈;

Android入门之Activity四种启动模式(standard、singleTop、singleTask、singleInstance)

我们平时直接创建的activity都是这种模式的activity,这种模式的activity的特点是:只要你创建了activity实例,一旦激活该activity,则会向任务栈中加入新创建的实例,退出activity则会在任务栈中销毁该实例。

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

Android入门之Activity四种启动模式(standard、singleTop、singleTask、singleInstance)

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

如果任务栈中存在该模式的activity实例,则把栈中该实例以上的activity实例全部移除,调用该实例的newinstance()方法重用该activity,使该实例处於栈顶位置,否则就重新创建一个新的activity实例。

Android入门之Activity四种启动模式(standard、singleTop、singleTask、singleInstance)

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

当该模式activity实例在任务栈中创建后,只要该实例还在任务栈中,即只要激活的是该类型的activity,都会通过调用实例的newinstance()方法重用该activity,此时使用的都是同一个activity实例,它都会处于任务栈的栈顶。此模式一般用于加载较慢的,比较耗性能且不需要每次都重新创建的activity。

Android入门之Activity四种启动模式(standard、singleTop、singleTask、singleInstance)

singtask的应用:

可以用来退出整个应用。

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

附:

退出单个activity方法:

调用finish

  杀死该进程:killprocess(process.mid)

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

退出整个应用:

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

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

  通过广播来完成退出功能

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@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掉。

以上所述是小编给大家分享的android入门之activity四种启动模式(standard、singletop、singletask、singleinstance),希望大家喜欢。

延伸 · 阅读

精彩推荐
  • AndroidAndroid CardView+ViewPager实现ViewPager翻页动画的方法

    Android CardView+ViewPager实现ViewPager翻页动画的方法

    本篇文章主要介绍了Android CardView+ViewPager实现ViewPager翻页动画的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Abby代黎明9602022-03-02
  • AndroidAndroid程序设计之AIDL实例详解

    Android程序设计之AIDL实例详解

    这篇文章主要介绍了Android程序设计的AIDL,以一个完整实例的形式较为详细的讲述了AIDL的原理及实现方法,需要的朋友可以参考下...

    Android开发网4642021-03-09
  • Android汇总Android视频录制中常见问题

    汇总Android视频录制中常见问题

    这篇文章主要汇总了Android视频录制中常见问题,帮助大家更好地解决Android视频录制中常见的问题,需要的朋友可以参考下...

    yh_thu5192021-04-28
  • AndroidAndroid中AsyncTask详细介绍

    Android中AsyncTask详细介绍

    这篇文章主要介绍了Android中AsyncTask详细介绍,AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合,需要的朋友可以参考下...

    Android开发网7452021-03-11
  • AndroidAndroid实现Service获取当前位置(GPS+基站)的方法

    Android实现Service获取当前位置(GPS+基站)的方法

    这篇文章主要介绍了Android实现Service获取当前位置(GPS+基站)的方法,较为详细的分析了Service基于GPS位置的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    Ruthless8342021-03-31
  • AndroidAndroid界面效果UI开发资料汇总(附资料包)

    Android界面效果UI开发资料汇总(附资料包)

    android ui界面设计,友好的界面会提高用户体验度;同时也增强了android ui界面设计的难度,本文提供了一些常用开发资料(有下载哦)感兴趣的朋友可以了解下...

    Android开发网4672021-01-03
  • AndroidAndroid编程解析XML方法详解(SAX,DOM与PULL)

    Android编程解析XML方法详解(SAX,DOM与PULL)

    这篇文章主要介绍了Android编程解析XML方法,结合实例形式详细分析了Android解析XML文件的常用方法与相关实现技巧,需要的朋友可以参考下...

    liuhe68810052021-05-03
  • AndroidAndroid实现固定屏幕显示的方法

    Android实现固定屏幕显示的方法

    这篇文章主要介绍了Android实现固定屏幕显示的方法,实例分析了Android屏幕固定显示所涉及的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    鉴客6192021-03-27