在我的应用程序中有一个别名活动:MyActivity并MyAliasActivity在清单中注册。别名的目的是提供额外的意图过滤器。用户可以在运行时启用/禁用此功能。活动和别名有singleTop修饰符。
但是,如果我在禁用组件的情况下启动我的应用程序(MyActivity在顶部),然后我启用它,并广播与意图过滤器匹配的事件,MyActivity再创建一次(通过别名) - 我有两个不想要的 backstack。
他能以任何方式处理吗?我只需要在后台进行一项活动。
在我的应用程序中有一个别名活动:MyActivity并MyAliasActivity在清单中注册。别名的目的是提供额外的意图过滤器。用户可以在运行时启用/禁用此功能。活动和别名有singleTop修饰符。
但是,如果我在禁用组件的情况下启动我的应用程序(MyActivity在顶部),然后我启用它,并广播与意图过滤器匹配的事件,MyActivity再创建一次(通过别名) - 我有两个不想要的 backstack。
他能以任何方式处理吗?我只需要在后台进行一项活动。
您应该使用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