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

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

Activity的启动模式可以通过AndroidManifest.xml文件中的<activity>元素的属性来指定,一共有4中模式:

1
<
activity
android:name
=
"ActivityMain"
android:launchMode
=
"singleTask"
></
activity
>
    • standard
    • singleTop
    • singleTask
    • singleInstance 

     这4中模式又分两类,standard和signleTop属于一类, singleTask和signleInstance属于另一类。

 

    standard和singleTop属性的 Activity 的实例可以属于任何任务(Task),并且可以位于Activity堆栈的任何位置。比较典型的一种情况是,一个任务的代码执行 startActivity(),如果传递的 Intent 对象没有包含 FLAG_ACTIVITY_NEW_TASK 属性, 指定的 Activity 将被该任务调用,从而装入该任务的Activity 堆栈中。 standard和singleTop的区别在于:standard模式的Activity在被调用时会创建一个新的实例,所有实例处理同一个 Intent对象; 但对于singleTop模式的Activity,如果被调用的任务已经有一个这样的Activity 在堆栈的顶端,那么不会有新的实例创建, 任务会使用当前顶端的Activity实例来处理Intent对象,换句话说,如果被调用的任务包含一个不在堆栈顶端的 singleTop Activity, 或者堆栈顶端为 singleTop 的Activity的任务不是当前被调用的任务,那么,仍然会有一个新的Activity对象被创建。

 

    singleTask 和 singleInstance模式的Activity 仅可用于启动任务的情况, 这种模式的Activity总是处在Activity堆栈的最底端,并且一个任务中只能被实例化一次。两者的区别在于:对于 singleInstance模式的Activity, 任务的Activity堆栈中如果有这样的Activity,那它将是堆栈中的唯一的 Activity, 当前任务收到的 Intent 都由它处理, 由它开启的其他 Activity 将在其他任务中被启动; 对于 SingleTask模式的Activity,它在堆栈底端,其上方可以有其他Activity被创建, 但是,如果发给该Activity的Intent对象到来时该Activity不在堆栈顶端,那么该Intent对象将被丢弃,但是界面还是会切换到当前 的Activity。

转载于:https://www.cnblogs.com/jiezzy/archive/2012/06/18/2553885.html

你可能感兴趣的文章
[20180606]如何dump数据库里面的汉字.txt
查看>>
C#面向对象(四)虚方法实现多态
查看>>
day3-Nfs
查看>>
iptables
查看>>
谷歌技术"三宝"之BigTable(转)
查看>>
解析JavaScript中的字符串类型与字符编码支持
查看>>
二叉树的遍历
查看>>
openssl RSA密钥格式PKCS1和PKCS8相互转换
查看>>
吴忠军-临沂一业主未交取暖费新房却被淹,损失咋处理?
查看>>
C++类中的特殊成员函数-------复制构造函数
查看>>
barManager.Menu(barSubItem)
查看>>
敏感词的过滤
查看>>
运维常用工具
查看>>
ajax写用户注册
查看>>
Prony算法
查看>>
登录界面 动画背景效果
查看>>
day1-Vsftpd
查看>>
洛谷P2296 寻找道路==codevs3731 寻找道路
查看>>
Ubuntu删除history记录
查看>>
关闭或开启Linux上的iptables防火墙,SSH端口(转)
查看>>