0

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

但是,如果我在禁用组件的情况下启动我的应用程序(MyActivity在顶部),然后我启用它,并广播与意图过滤器匹配的事件,MyActivity再创建一次(通过别名) - 我有两个不想要的 backstack。

他能以任何方式处理吗?我只需要在后台进行一项活动。

4

1 回答 1

0

您应该使用singleTask而不是singleTop. singleTask将保证您在 backStack 中只有一个 Activity 实例。如果您第二次使用singleTasklaunchMode 启动 Activity,onNewIntent则会运行该 Activity 而不是创建新的 Activity。另一种解决方案是使用singleInstance,这与 几乎相同singleTask,只保留一个 Activity 实例并onNewIntent在它已经创建的情况下运行。

有关更多信息,这里很好地解释了它的工作原理:

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

谷歌参考:

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

于 2017-09-14T08:35:32.643 回答