Android launchmode=";“单一任务”;没有按预期工作
我有一个在后台运行的应用程序,并通过通知系统显示错误消息。此通知有一个悬而未决的内容,可引导回应用程序的主屏幕。在这个主屏幕上,我设置了launchmode=“singleTask”。正如我在《Android开发指南》中所理解的,这意味着我的主要活动将只有一个实例 但是,如果用户当时正在查看该活动(或应用程序中的另一个活动),并触摸通知以清除该活动,它会继续并将该活动的另一个副本放在堆栈上,因此如果我点击“后退”按钮,它将再次返回主屏幕(从主屏幕)Android launchmode=";“单一任务”;没有按预期工作,android,Android,我有一个在后台运行的应用程序,并通过通知系统显示错误消息。此通知有一个悬而未决的内容,可引导回应用程序的主屏幕。在这个主屏幕上,我设置了launchmode=“singleTask”。正如我在《Android开发指南》中所理解的,这意味着我的主要活动将只有一个实例 但是,如果用户当时正在查看该活动(或应用程序中的另一个活动),并触摸通知以清除该活动,它会继续并将该活动的另一个副本放在堆栈上,因此如果我点击“后退”按钮,它将再次返回主屏幕(从主屏幕) 它为什么会这样做?在问题中,你几乎回答了你自己
它为什么会这样做?在问题中,你几乎回答了你自己的问题;) 尝试使用:
android:launchMode="singleInstance"
不过,请注意,如果您正在执行startActivityForResult之类的操作,您将永远不会收到结果
更新:
如果要使用onNewIntent接收新的意图数据:
public void onNewIntent(Intent intent)
{
super.onNewIntent(intent);
setIntent(intent);
}
这会将使用getIntent()时应用程序返回的意图更改为传递给onNewIntent的新意图。检查的文档
我遇到了一个类似的问题,并用android:launchMode=“singleInstance”解决了它。我觉得如果用户选择通知,您需要以下行为:
- 如果应用程序已经在任务中运行,只需将该任务放到前台,并显示活动堆栈顶部的所有活动
- 如果应用程序尚未在任务中运行,请在新任务中启动应用程序的主要活动
这应该可以满足您的需要。好吧,我继续尝试了singleInstance。不幸的是,它仍然以同样的方式运行。在再次查看文档之后,我想知道是否需要在我的主要活动中重写onNewIntent(),但我不知道该怎么做。Ogre-查看更新以了解有关使用onNewIntent()的信息,并查看Ok,因此我在阅读之后做了一些测试。结果证明它从来没有打过电话。因此,我能得出的唯一结论是,它根本不符合文档所说的功能。在本例中,我做的一件事是创建一个单独的函数来处理从getIntent()提取的bundle extras。事实上,这是相当令人沮丧的。基本上,我从onCreate()中获取了所有逻辑,并传入了Intent。现在可以从onCreate()或onNewIntent()调用此函数。这也是我的解决方案。当应用程序位于后台时,如何从服务返回到应用程序?@yanivtwin
Intent Intent=getPackageManager().getLaunchIntentForPackage(getPackageName());星触觉(意向)代码>这将使任务从后台转到前台,如果应用程序尚未运行,则启动新应用程序。