防止 Android 重新创建已经存在的活动

Posted

技术标签:

【中文标题】防止 Android 重新创建已经存在的活动【英文标题】:Prevent Android from recreating already existent activity 【发布时间】:2017-12-25 18:33:24 【问题描述】:

我的问题是与我的应用程序的深层链接。更具体地说,这也仅在尝试从 Facebook Messenger 打开指向我的应用的深层链接且聊天头处于活动状态时才会发生。

有时,当尝试使用来自 FBMessenger 的深层链接返回(未打开,仅在信使覆盖应用程序后返回)到我的应用程序(只有一个活动)时,活动会重新创建。 onCreate 方法被调用,我的活动的一个新实例正在被创建。主要问题是在旧活动被销毁后不会发生这种情况,我添加了日志并调用了第一个新活动的onCreate,并且只有在旧活动的onDestroy被调用之后。

那么,如果 android 尚未销毁旧实例,为什么它会尝试创建我的 Activity 的新实例?

Activity 的launchMode 设置为singleTask

编辑:还尝试将launchMode 设置为singleInstancesingleTop

编辑 2:通过将 android:documentLaunchMode="intoExisting" 添加到活动中找到可能的修复。明天早上会再做一些测试,如果一切正常,会将此修复作为解决方案发布。

【问题讨论】:

【参考方案1】:

在您的 Android 清单中使用它

 android:documentLaunchMode="intoExisting"

【讨论】:

查看developer.android.com/guide/topics/manifest/…了解更多信息 您好,感谢您的快速回答,但它不起作用。相同的行为。我会更新我的问题。 我做了,但找不到任何可能阻止这种行为的设置。 检查这个:***.com/questions/4341600/… 类似的东西可能会奏效,会尝试让你知道它是怎么回事。

以上是关于防止 Android 重新创建已经存在的活动的主要内容,如果未能解决你的问题,请参考以下文章

防止在关闭屏幕时重新创建 Android 活动

防止android在崩溃后重新创建活动堆栈

如何防止片段在活动重新创建时触发 onCreate onCreateView

如何在 Android M 或更高版本中在运行时更改权限时防止重新创建 Activity

系统杀死应用程序后,Android 没有重新打开以前的活动

如何检查android是不是要重新创建活动或销毁?