Android launchmode ="singleTask"无法按预期工作

Ogr*_*gre 13 android

我有一个在后台运行的应用程序,并通过通知系统显示错误消息.此通知具有pendingIntent,可以返回应用程序的主屏幕.在这个主屏幕上,我设置了launchmode ="singleTask".正如我从Android开发指南中理解的那样,这应该意味着我的主要活动将只有一个实例.

但是,如果用户当时正在查看该活动(或应用程序中的另一个活动),然后触摸通知以清除它,它会继续并将活动的另一个副本放在堆栈上,所以如果我点击了后退按钮,它将再次返回主屏幕(从主屏幕).

为什么要这样做?

Sco*_*ler 19

你几乎在问题中回答了你自己的问题;)

尝试使用:

android:launchMode="singleInstance"
Run Code Online (Sandbox Code Playgroud)

但是要注意,如果你正在做像startActivityForResult这样的任何事情 - 你永远不会收到结果!

更新:

如果要使用onNewIntent接收新的intent数据:

public void onNewIntent(Intent intent)
{
    super.onNewIntent(intent);
    setIntent(intent);
}
Run Code Online (Sandbox Code Playgroud)

当您将getIntent()用于传递给onNewIntent的新intent时,这将改变应用程序返回的意图.

  • 好吧,我继续尝试使用singleInstance.不幸的是,它仍然以同样的方式表现. (3认同)