通过通知启动活动:避免重复活动

pgs*_*rom 27 android

所以我目前正在显示通知.当用户单击此注释时,将启动该应用程序.通知仍然存在,表示该服务正在后台运行.

Intent notificationIntent = new Intent(context, LaunchActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
mNotificationManager.notify(1, notification);
Run Code Online (Sandbox Code Playgroud)

但是,我发现了一个出现错误的情况.如果用户通过单击正常图标启动应用程序,并且在活动正在运行时单击通知,则会启动新活动,而不会退出先前的活动,后者位于较早的活动之上.这还不是全部:进一步点击通知将创建其他活动并将其置于已经运行的活动之上.我怎么能阻止这个?是否有一个很好的检查,以查看某个活动当前是否正在显示或已加载?

yan*_*nko 38

这是它默认的方式.您可能需要指定android:launchMode="singleTop"是否只想拥有一个实例.
有4种发布模式,更多信息请访问:https://developer.android.com/guide/topics/manifest/activity-element.html

  • 将其设置为"singleTask"解决了我的问题.谢谢你的协助! (8认同)

Tho*_*ard 11

使用时lanchMode="singleTask",如果您的活动实例已存在,Android不会重新创建活动,而是使用该onNewIntent()方法启动它.

如Android所述:

系统在新任务的根目录下创建活动,并将意图路由到该任务.但是,如果活动的实例已存在,系统会通过调用其onNewIntent()方法将意图路由到现有实例,而不是创建新实例.

活动模式的Android文档