Activity 单顶启用别名
Activity alias enabling with single top
在我的应用程序中有一个 activity 别名:MyActivity
和 MyAliasActivity
在清单中注册。别名的目的是提供额外的意图过滤器。此功能可以由用户在运行时 enabled/disabled。 activity 和别名有 singleTop
修饰符。
但是,如果我在禁用组件(MyActivity
在顶部)的情况下启动我的应用程序,然后启用它,并广播与 intent 过滤器匹配的事件,则会再创建一个 MyActivity
时间(别名)- 我在后台有两个,这是不需要的。
他有办法处理吗?我只需要一个 activity 在后台。
您应该使用 singleTask
而不是 singleTop
。 singleTask
将 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
在我的应用程序中有一个 activity 别名:MyActivity
和 MyAliasActivity
在清单中注册。别名的目的是提供额外的意图过滤器。此功能可以由用户在运行时 enabled/disabled。 activity 和别名有 singleTop
修饰符。
但是,如果我在禁用组件(MyActivity
在顶部)的情况下启动我的应用程序,然后启用它,并广播与 intent 过滤器匹配的事件,则会再创建一个 MyActivity
时间(别名)- 我在后台有两个,这是不需要的。
他有办法处理吗?我只需要一个 activity 在后台。
您应该使用 singleTask
而不是 singleTop
。 singleTask
将 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