6

该服务创建一个持久性Notification并在单击时启动主要活动 via PendingIntent。这是代码。

Intent notificationIntent = new Intent(getApplicationContext(), ViewPagerActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(StreamingService.this, 0, notificationIntent, 0);

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

最后,我有同样的活动,一个在另一个之上。我可以通过按后退按钮看到这一点,这将杀死主要活动一次,然后让我回到同一个活动,直到我关闭最后一个活动。

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

PS。如果不能很好地解释这一点,我深表歉意。如果是这种情况,请告诉我,我会重新表述问题。

4

3 回答 3

7

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

           <activity android:name=".MyActivity"
              android:label="@string/app_name"
              android:launchMode="singleTop"      // <-- THIS LINE
            >

对于每个Activity您需要此功能的人。到目前为止,它完全没有错误。

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

于 2012-12-19T17:29:07.490 回答
6

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

于 2012-12-18T13:33:28.953 回答
1

尝试在 REQUEST_CODE 中使用另一个值。不要在 REQUEST_CODE 中使用默认值 0。

或者您的 pendingIntent 将重新启动您的活动。

如果要使用正常的活动周期,请在创建 PendingIntent 时输入请求值。

PendingIntent resultPendingIntent = PendingIntent.getActivity(
        context, REQUEST_CODE,
        resultIntent,
        PendingIntent.FLAG_UPDATE_CURRENT);
于 2016-05-10T09:34:49.603 回答