【问题标题】:Notification intent is not launched in corner cases在极端情况下未启动通知意图
【发布时间】:2011-07-05 01:08:06
【问题描述】:

这是我的场景:

  1. 我显示一个无法清除的通知 (FLAG_NO_CLEAR),
  2. 我设置了一个挂起的意图来启动 Activity
  3. 在启动的Activity 中,用户按下了某个东西,我启动了另一个Activity
  4. 再次点击通知不会启动/显示待处理意图中的Activity,这很烦人。我希望最初的Activity 重新启动或带到前面。但是,我似乎无法做到这一点。

通知相关代码:

Intent i = new Intent(this, RemindersActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // the docs say this is required
PendingIntent pi = PendingIntent.getActivity(this, 0, i, 0);
n.setLatestEventInfo(this, getString(R.string.app_name), text, pi);

在那之后,它只是正常的startActivity()(在第 3 步)。这是我在 logcat 中得到的:

I/ActivityManager(  147): Starting activity: Intent { flg=0x10000000 cmp=my.package/my.package.RemindersActivity bnds=[0,387][480,483] }
W/InputManagerService(  147): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@45a33fc8

关于如何解决这个问题的任何想法?我想到的唯一一个是使用广播意图而不是活动意图(并从接收器启动活动),但我什至不确定这是否可行。

【问题讨论】:

标签: android notifications android-pendingintent


【解决方案1】:

但是,我似乎无法做到这一点。

尝试将FLAG_ACTIVITY_REORDER_TO_FRONTFLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_SINGLE_TOP 的组合添加到Intent

【讨论】:

  • 我已经尝试了您的建议和 mibollma 的建议 (clearTaskOnLaunch="true"),没有任何效果。
  • 嗯,实际上FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP 现在似乎可以工作了,我不知道我之前做了什么而没有。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 2021-03-03
  • 2013-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多