温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

flag_activity_new_task怎么用

发布时间:2021-09-22 17:23:24 来源:亿速云 阅读:155 作者:小新 栏目:开发技术

这篇文章主要介绍了flag_activity_new_task怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

  FLAG_ACTIVITY_NEW_TASK比较标准解释,首先会查找是否存在和被启动的Activity具有相同的亲和性的任务栈(即taskAffinity,注意同一个应用程序中的activity的亲和性相同),如果有,则直接把这个栈整体移动到前台,并保持栈中旧activity的顺序不变,然后被启动的Activity会被压入栈,如果没有,则新建一个栈来存放被启动的activity,注意,默认情况下同一个应用中的所有Activity拥有相同的关系(taskAffinity).

  FLAG_ACTIVITY_NEW_TASK怎样

  首先要强调下,下边两个LaunchMode启动模式功能,已作区分:

  当一个Activity被设置为singletask时

  (1)它并没有创建新的任务栈(TaskId都是一样的)

  (2)如果它已经存在于栈中,再次请求触发此Activity时,会调用此类实例的onNewIntent方法,不会重新创建新的实例

  (3)如果此类所在的任务栈上面有其它Activity,那么其之上的Activity会全部出栈。

  当一个Activity被设置为singleinstance时

  (1)如果此Activity没有实例,它会创建一个新的任务栈。(两个TaskId不一样)

  (2)如果任务栈中已经有此实例,会调用onNewIntent方法,不会创建新的任务栈和实例

  (3)独立成Taskstack,并且有且仅有你自己。而且始终保持一个实例离栈的时候,先退当前的task,再退另外的task

  FLAG_ACTIVITY_NEW_TASK个人理解:

  默认情况下同一个应用中的所有Activity,都拥有相同的关系(taskAffinity),即由FLAG_ACTIVITY_NEW_TASK开启的新Activity,也都在同一个任务栈中(与Application相同的任务栈),若想使新Activity进入不同栈中,则还需要如下配置:

  <activity

  android:name=".ui.activity.OtherTaskActivityXXX"

  android:taskAffinity="android.task.browser"/>//注意这里的taskAffinity

  并且在该OtherTaskActivityXXX页面中,若再开启的其他页面,那么所有的其他页面,都将被压入到这个新的任务栈中。

感谢你能够认真阅读完这篇文章,希望小编分享的“flag_activity_new_task怎么用”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI