博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Activity启动模式
阅读量:7121 次
发布时间:2019-06-28

本文共 1536 字,大约阅读时间需要 5 分钟。

hot3.png

Activity的launchMode  

1 standard:标准模式    每次启动一个activity都会重新创建一个实例,不管这个实例存不存在,生命周期也    都会调用。在这种模式下,谁启动了这个Activity,这个Activity就运行在启动它的那个activity所在任务栈中。

2 singleTop:栈顶复用模式  如果新的Activity位于栈顶,那么这个activity不会重建,同时它的onNewIntent方法会被调用,通过这个方法可以我们可以取出当前信息。这个acitivity的生命周期不会被系统调用。如果新的activity没有位于栈顶,那么这个activity将会被重建,并位于栈顶。

3singleTask:栈内复用模式。这是一种单例模式,只要activity在一个栈中存在,启动此activity都不会被重建,系统会调用onNewIntent方法并且在其之上的acitivity都会被销毁。不存在则创建压入栈中.

4 singlnstance:单例模式。它除了具有singetask所有特性以外,此类activity只能单独的位于一个任务栈中。由于栈内复用特性,以后的请求均不会新建activity,除非这个任务栈销毁了

 

TaskAffinity:任务相关性,标识了一个acitivity所需任务栈的名字。默认情况下所有activity所需任务栈的名字为应用的包名。如果想指定TaskAffinity,属性值可以不能与包名相同,否则相当于没有指定。TaskAffinity属性主要和singleTask启动模式或者allowTaskReparenting属性配对使用,其它情况没有意义。当TaskAffinity和singleTask启动模式配对使用的时候,具有此模式的activity,会启动会运行在和TaskAffinity名字相同的任务栈中。当TaskAffinity与allowTaskReparenting结构的啥时候,举个例子,当一个应用A启动了应用B的某个应用Activity后,如果这个Acitivity 属性为true的话,那么应用B启动后,此Activity会直接从A的任务栈中转移到应用B的任务栈中。

 

Activity指定启动模式有两种,一种在AndroidMenifest中位Activity指定,另一种通过Intent中设置intent.addFlags(...)指定。后者优先级高于第一种。第一种无法直接为Activity设定Flag_ACTIVITY_CLEAR_TOP标识,第二种无法为activity指定singleInstance模式。

 

Activity的Flags,介绍一下常用的

FLAG_ACTIVITY_NEW_TASK 为activity指定“singleTask”启动模式,和XML中指定启动模式相同

FLAG_ACTIVITY_SINGLE_TOP  singleTop启动模式。和XML中指定该模式相同

FLAG_ACTIVITY_CLEAR_TOP 具有此标记的activity,当它启动时,再其之上的activity都要出栈。一般会和singleTask启动模式一起出现,如果是standand模式启动,将会连同它之上的activity都要出栈,系统创建新的Activity,并放入栈顶。

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 具有这个标记的Activity不会出现在历史列表中,相当于XML中android:excludeFromRecents="true"。

 

 

转载于:https://my.oschina.net/u/1268043/blog/1629900

你可能感兴趣的文章
ros名称、命名空间和重映射
查看>>
系统进程查看 --- 微软官方出品
查看>>
Python 第三方模块安装出现的问题和解决方案.
查看>>
实验1
查看>>
CF915E Physical Education Lessons(珂朵莉树)
查看>>
洛谷P5050 【模板】多项式多点求值
查看>>
第十章:基本数据结构(2)
查看>>
php处理管道文件流
查看>>
Centos 6 搭建安装 Gitlab
查看>>
2012.02.13(rtsp)
查看>>
关于设置安卓屏幕的显示方向
查看>>
面试题10-二进制中1的个数
查看>>
cmd 查看域名对应的 IP
查看>>
LED流水灯程序——小白的单片机笔记
查看>>
sysdate
查看>>
Docker的主要作用
查看>>
SpringMVC4 + Spring + MyBatis3 【转】
查看>>
责任链模式
查看>>
基础笔记
查看>>
swift网络数据请求方法
查看>>