如何保留单个活动实例但能够更新视图?

joh*_*nYu 37 android android-activity

在我的情况下,有一种情况我需要确保活动一次只运行一个.

我发现如果我设置了LauchMode活动,我可以达到单实例目标,但它不会更新活动的视图.

此活动由startActivityForResult我们发起,我们将意图的URI发送给活动.

让我们讨论一下这个案例:

  • gallery - lauch与imageA的活动.

  • 相机 - 用imageB来完成这项活动.

我的请求不是销毁旧活动,但刚收到新意图信息的活动应刷新视图.


我发现了一种新方法onNewIntent.此方法可以在恢复之前刷新意图.我会尝试.

Raj*_*Dua 79

您可以拥有一个manifest属性为singleInstance的Activity.一旦重新启动活动,onResume就会被调用.您可以使用新图像更新视图,并使旧视图无效.

<activity ..
      android:launchMode= "singleInstance" />
Run Code Online (Sandbox Code Playgroud)

  • 使用onNewIntent()可以更新意图. (5认同)

viv*_*idh 35

在你的清单中,使用android:launchMode="singleTask"而不是android:launchMode="singleInstance".使用singleInstance只返回到现有实例(如果它位于堆栈顶部).另一方面,singleTask返回到活动的现有实例,因为它始终位于任务的根部.

然后,在启动实例时,覆盖onNewIntent以根据新意图更新UI.

有关详细信息,请参阅Andorid文档.

  • 我同意这两种模式只允许活动的一个实例,但你对差异的解释是错误的. (7认同)