活动别名启用单顶

问题描述:

在我的应用程序中有一个活动的别名:MyActivityMyAliasActivity登记在清单。别名的目的是提供额外的意图过滤器。用户可以在运行时启用/禁用此功能。活动和别名已获得singleTop修饰符。但是,如果我在禁用组件的情况下启动我的应用(顶部为MyActivity),那么我启用它,并广播匹配意图过滤器的事件,MyActivity被再次创建(通过别名) - 我'已经有两个人在背后是不受欢迎的。活动别名启用单顶

他可以以任何方式处理?我需要在背后只有一个活动。

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

对于这里的更多信息是如何工作的一个很好的解释:

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

谷歌参考:

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

+0

您的解决方案确实工作,然而,加入'singleTask'防止活动正确处理onActivityResult。由于我的项目是附加到活动的库,我不确定是否可以要求用户使用'singleTask'。如果活动位于顶部,我认为'singleTop'和'singleTask'的作用相似。显然他们不... – Mohru

+0

你也可以使用'singleInstance',可能更适合你的需求,并且与singleTask的工作方式类似 – Ricardo

+0

有关更多信息,标准和singleTop的工作方式相同,singleTask和singleInstance的工作方式相似 – Ricardo