在我正在制作的应用中,如果应用最小化,使用下面的代码我会使用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());
}
答案 0 :(得分:2)
尝试将清单中活动的启动模式设置为此
<activity
android:name=".MyActivity"
android:launchMode="singleTop" />
解释:每次都不会创建singleTop
活动的新实例。如果目标任务已有现有实例,则不会创建活动的新实例,而是已创建的实例将接收调用意图。
查看android documentation的启动模式,并使用适合您的用例的模式。