Activity 单顶启用别名

Activity alias enabling with single top

在我的应用程序中有一个 activity 别名:MyActivityMyAliasActivity 在清单中注册。别名的目的是提供额外的意图过滤器。此功能可以由用户在运行时 enabled/disabled。 activity 和别名有 singleTop 修饰符。

但是,如果我在禁用组件(MyActivity 在顶部)的情况下启动我的应用程序,然后启用它,并广播与 intent 过滤器匹配的事件,则会再创建一个 MyActivity时间(别名)- 我在后台有两个,这是不需要的。

他有办法处理吗?我只需要一个 activity 在后台。

您应该使用 singleTask 而不是 singleTopsingleTask 将 gua运行 表明您在 backStack 中只有一个 Activity 实例。如果您第二次使用 singleTask launchMode 启动 Activity,则 onNewIntent 将是 运行 而不是创建新的 Activity。另一种解决方案是使用 singleInstance,这与 singleTask 几乎相同,只保留 Activity 和 运行 onNewIntent 的一个实例(如果已创建) .

有关详细信息,请参阅此处对其工作原理的很好解释:

https://inthecheesefactory.com/blog/understand-android-activity-launchmode/en

Google参考:

https://developer.android.com/guide/topics/manifest/activity-element.html