从推送通知开始完成活动后,如何将应用发送到后台

时间:2019-02-12 13:41:33

标签: android android-intent intentfilter back-stack activity-stack

我有一个活动,如果应用程序收到推送通知,则会调用该活动。该活动从FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_CLEAR_TOP开始。该活动称为“ A”,显示用户界面并在一段时间后结束。在这一点上,活动堆栈有问题。

场景:

  1. 该应用程序处于后台,并且具有另一个活动“ B”
  2. 然后该应用收到推送通知并启动活动A。
  3. 完成相关操作后,该应用将完成活动A
  4. 然后返回到活动B,即使在收到推送通知之前应用程序在后台,它仍停留在前台。

调试后,我发现系统在完成活动A后会调用活动B的onResume方法。
如果应用程序是从后台启动的,该如何保持在后台运行?我应该更改活动A的意图标志吗?

1 个答案:

答案 0 :(得分:0)

您可以通过两种方式实现这一目标

1-来自带有活动标签android:noHistory="true"的清单文件

2-当您盯着下面的活动设置标志时,从代码中获取

Intent mIntent = new Intent(context, Youractivity.class); 
mIntent.setFlags(mIntent.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(mIntent);

有关更多信息,请查看developers link

您可以做的另一件事是使用this.finish()而不是notificationActivity中的this.finishAffinity();。这样会关闭应用程序,而不会进入前台。