Android:如何避免点击通知调用 onCreate()

在我的应用程序中,如果发生特殊情况,我会通过通知通知用户:

public void triggerNotification(String msg) {
        notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        Intent contentIntent = new Intent(this, ABC.class);
        Notification notification = new Notification(R.drawable.icon, msg, System.currentTimeMillis());
        notification.setLatestEventInfo(this, "ABC", msg, PendingIntent.getActivity(this.getBaseContext(), 0, contentIntent, PendingIntent.FLAG_CANCEL_CURRENT));
        notification.flags = Notification.FLAG_AUTO_CANCEL;
        notificationManager.notify(notificationCounter, notification);
        notificationCounter++;
}

如果用户单击通知,则调用 onCreate() 方法。但我希望调用我的应用中的特定方法,或者如果应用不在前台,则将其带回前台。

我知道有很多教程解释了如何处理通知,但我只是不完全理解它们,并且无法像我想要的那样实现它们。


答案 1

若要将应用置于前台(如果应用已在运行),需要对目的设置不同的标志:

contentIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

对于运行特定方法,您只需将额外的信息与意图一起传递,并在应用程序中对其进行解释,以决定要运行哪种方法。


答案 2

建议使用FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_SINGLE_TOP只能部分解决问题。Android 清单中的活动还应应用这些设置,以便从主屏幕启动活动具有相同的行为。如果没有这些属性,可以启动活动的多个实例。

<activity android:name="foo"
          android:clearTaskOnLaunch="true"
          android:launchMode="singleTop"
          android:label="@string/app_name">