我有一个带有通知的应用程序,如果我单击它们会打开某个活动。我想要那个,如果我点击通知并且活动已经打开,它 不会 再次启动,而只是被带到前面。
我以为我可以用 flagFLAG_ACTIVITY_BROUGHT_TO_FRONT或来做到这一点FLAG_ACTIVITY_REORDER_TO_FRONT,但它会再次打开它,所以我有两次活动。
FLAG_ACTIVITY_BROUGHT_TO_FRONT
FLAG_ACTIVITY_REORDER_TO_FRONT
这是我的代码:
event_notification = new Notification(R.drawable.icon, mContext.getString(R.string.event_notif_message), System.currentTimeMillis()); Intent notificationIntent = new Intent(mContext, EventListActivity.class); notificationIntent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); sendNotification(event_notification, notificationIntent, mContext.getString(R.string.event_notif_title), body, Utils.PA_NOTIFICATIONS_ID);
我可以用标志管理它还是应该在 SharedPreferences 中存储一个变量来检查它是否打开?
谢谢!
你需要设置你开始的launchMode属性。这将导致传入的 Intent 被传递到现有实例,而不是在该实例已经位于任务堆栈的顶部时启动一个新实例。Activity``singleTop``Activity
launchMode
Activity``singleTop``Activity
这是通过添加android:launchMode="singleTop"到<activity>元素在清单中完成的。要访问最新的 Intent(如果您对可能随它传入的任何数据感兴趣),请覆盖onNewIntent()您的Activity.
android:launchMode="singleTop"
<activity>
onNewIntent()
Activity