如何防止在点击通知打开最小化应用程序时调用“onCreate”?

时间:2018-03-19 10:40:05

标签: android notifications android-pendingintent

在我正在制作的应用中,如果应用最小化,使用下面的代码我会使用NotificationCompat.Builder显示通知,当我点击通知时,如果用户不在应用中,该应用程序打开。

我的问题是,当应用程序打开时,再次调用onCreate会导致应用程序出现问题,而如果通过单击启动器中的图标onStart以及之后打开了应用程序会被称为。那么有没有办法阻止调用onCreate

我尝试在创建PendingIntent对象时使用的意图上设置标记(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP),但这没有帮助。

public static void notificatePush(Context context, int 
notificationId, String tickerText, String contentTitle, String 
contentText, Intent intent) {
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle(contentTitle)
            .setContentText(contentText)
            .setTicker(tickerText);

    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
            | Intent.FLAG_ACTIVITY_SINGLE_TOP);//This didn't work

    PendingIntent resultPendingIntent = PendingIntent.getActivity(context, notificationId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    mBuilder.setContentIntent(resultPendingIntent);
    mBuilder.setAutoCancel(true);
    mBuilder.setOnlyAlertOnce(true);

    NotificationManager notifyMgr = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

    notifyMgr.notify(notificationId, mBuilder.build());
}

1 个答案:

答案 0 :(得分:2)

尝试将清单中活动的启动模式设置为此

<activity
  android:name=".MyActivity"
  android:launchMode="singleTop" />

解释:每次都不会创建singleTop活动的新实例。如果目标任务已有现有实例,则不会创建活动的新实例,而是已创建的实例将接收调用意图。

查看android documentation的启动模式,并使用适合您的用例的模式。