我正在开发一个向用户显示通知的应用。通知的目的是使用户在另一个活动中轻松返回活动。我在我的应用程序中使用此代码来创建和显示通知。
notification = new Notification(R.drawable.icon,
"Notify",
System.currentTimeMillis());
notification.setLatestEventInfo(this, "App name",
"App message",
PendingIntent.getActivity(
this, 0,
new Intent(this, Main.class),
PendingIntent.FLAG_CANCEL_CURRENT));
notification.flags |= Notification.FLAG_ONGOING_EVENT;
nManager.notify(0, notification);
但是当用户点击通知时,会启动相同活动的新实例,而不是之前用户使用的实例。
我认为这与PendingIntent有关,但是我找不到如何让Intent恢复以前暂停的活动实例而不是创建新实例。
感谢。
答案 0 :(得分:22)
我发现了怎么做。我添加了以下代码:
notifyIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
现在我的代码看起来像这样:
notification = new Notification(R.drawable.icon,
"Notify", System.currentTimeMillis());
notification.setLatestEventInfo(this, "App name",
"App message", PendingIntent.getActivity(this,
0, new Intent(this, Main.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP),
PendingIntent.FLAG_CANCEL_CURRENT));
notification.flags |= Notification.FLAG_ONGOING_EVENT;
答案 1 :(得分:9)
这对我有用android:launchMode="singleInstance"
<activity
android:name="com.mosis.automatskidnevnik.MainActivity"
android:launchMode="singleInstance"
android:label="@string/app_name" >
...
答案 2 :(得分:1)
我通过设置
解决了同样的问题android:launchMode="singleTask"
答案 3 :(得分:0)
创建PendingIntent时,使用:
Main.this.getBaseContext()
如果要返回相同的活动,则应使用默认的“活动”上下文。在这里阅读更多内容:
Android - what's the difference between the various methods to get a Context?
答案 4 :(得分:0)