launchMode 为 singleTask 的 Activity 的两个实例
Posted
技术标签:
【中文标题】launchMode 为 singleTask 的 Activity 的两个实例【英文标题】:Two instances of an Activity with launchMode as singleTask 【发布时间】:2020-03-26 17:58:02 【问题描述】:我有一个使用 launchMode 作为 singleTask 的活动。但是由于某种原因,当我尝试在 "adb shell dumpsys activity activites" 中查找日志时,存在两个实例。第一个实例使用intent=act= flg=0x10000000 cmp=
启动,第二个实例使用以下意图intent= act= flg=0x10200000 cmp= (has extras)
启动。它是什么旗子?
实际上第二个意图是由不同的应用程序启动的。如何防止该应用启动我的活动的新实例。
【问题讨论】:
有些地方不太对劲。您是如何首次启动您的应用程序的?通过应用程序图标从主屏幕?或来自 android Studio 或安装程序?您可能会看到一个非常讨厌的长期 Android 错误。 两个实例是否在同一个任务中?还是他们在不同的任务中?你能粘贴adb shell dumpsys activity activities
的全部相关输出吗?
我意识到这个问题已经 5 个月大了。你有没有解决它?
【参考方案1】:
它是什么标志 - 0x10200000 ?
回答-https://***.com/a/29875943/4694013
【讨论】:
0x10000000 对应于 FLAG_ACTIVITY_NEW_TASK。 0x10200000对应什么? 正如您在共享的图像中看到的那样,提到 singleTask 和 singleInstance 不会启动多个实例,即使它们来自不同的进程。 这是错误的。这些特殊启动模式的全部意义在于防止多个实例,尤其是从多个任务启动时。以上是关于launchMode 为 singleTask 的 Activity 的两个实例的主要内容,如果未能解决你的问题,请参考以下文章
onActivityResult 与 launchMode="singleTask"?
launchMode="singleTask" 不创建新任务
设置 launchMode="singleTask" 与设置活动 launchMode="singleTop"