gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Android入门之Activity四种启动模式(standard、singleTop、singleTask、singleInstance)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

1、启动模式介绍 。

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

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

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

  任务栈 。

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

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

2、启动模式 。

(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),希望大家喜欢.

最后此篇关于Android入门之Activity四种启动模式(standard、singleTop、singleTask、singleInstance)的文章就讲到这里了,如果你想了解更多关于Android入门之Activity四种启动模式(standard、singleTop、singleTask、singleInstance)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com