Service
A创建一个Notification
,PendingIntent
打开Activity
B.用户拉下通知抽屉,然后按Notification
{{1} B先前在前面。 Activity
基本上会添加PendingIntent
B的另一个实例,而不是打开当前打开的实例。
如果Activity
已经打开,有没有办法让PendingIntent
打开Activity
,如果那里有Activity
的实例,请返回后台,然后打开一个新实例否则?
答案 0 :(得分:2)
为Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP
创建Intent
时添加Notification
。
同时设置Intent.FLAG_ACTIVITY_CLEAR_TOP
和Intent.FLAG_ACTIVITY_SINGLE_TOP
会导致使用Activity
的现有实例(将调用onNewIntent()
)。如果您只指定Intent.FLAG_ACTIVITY_CLEAR_TOP
且已存在Activity
的现有实例,则该实例(以及其上的所有其他活动)将完成并从堆栈中删除并且 new将创建Activity
的实例(将调用onCreate()
。)
答案 1 :(得分:0)
是的,您可以使用活动的单个任务或单个实例启动模式(或在待处理的意图标记中)来控制此行为。
查看launch modes文档,了解有关如何设置这些标记的详细信息。
答案 2 :(得分:0)
您可以在Manifest文件中设置Activity的属性,如下所示:
android:launchMode="singleTask"
或
在为PendingIntent定义Flags时,您可以使用flags作为:
Intent in=new Intent();
in.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);