防止通知PendingIntent启动Activity已经启动了吗?

san*_*one 6 android

该服务创建持久性Notification并启动click via上的主要活动PendingIntent.这是代码.

Intent notificationIntent = new Intent(getApplicationContext(), ViewPagerActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(StreamingService.this, 0, notificationIntent, 0);
Run Code Online (Sandbox Code Playgroud)

但是,如果在我按下通知时启动主要活动,它将再次启动,并再次启动...

最后,我有相同的活动,一个在另一个的顶部.我可以通过按下后退按钮来看到这一点,这将杀死主要活动一次,然后让我回到相同的活动,直到我关闭最后一个.

我怎样才能防止这种情况发生?可以PendingIntent检测到瞄准活动正在运行,因此它不会再次创建相同的活动,而是启动正在运行的活动吗?

PS.如果不能解释这个问题我会道歉.如果是这种情况,请告诉我,我会重新解释这个问题.

san*_*one 7

我也找到了这个解决方案.将此属性添加到Manifest

           <activity android:name=".MyActivity"
              android:label="@string/app_name"
              android:launchMode="singleTop"      // <-- THIS LINE
            >
Run Code Online (Sandbox Code Playgroud)

对于每个人Activity你需要这个功能.到目前为止,它完全没有错误.

哪种解决方案更好?如果没有,我的更容易.


eti*_*nne 5

根据您要实现的确切行为,您可以将其中一个标志作为getActivity()的最后一个参数传递: