我有一个使用正在进行的通知的应用让用户知道它的运行情况。这很方便,因为它需要一直在后台运行才能接收消息。该应用程序主要包含一个具有许多片段和一些服务的活动。
这是我用来显示和更新通知的方法。它在一个名为Notifications.java的类中实现 它的方法在MainActivity的onResume以及接收消息的服务中调用。
public static void updateOngoingNotification(Context c, String text) {
Intent intent = new Intent(c, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pIntent = PendingIntent.getActivity(c, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(c)
.setSmallIcon(R.drawable.ic_launcher)
.setOngoing(true)
.setContentText(text)
.setContentTitle(c.getString(R.string.app_name))
.setContentIntent(pIntent);
NotificationManager notificationManager = (NotificationManager) c
.getSystemService(c.NOTIFICATION_SERVICE);
notificationManager.notify(0, mBuilder.build());
}
问题是,一切似乎都应该正常工作,但是当我第二次尝试启动Activity时,应用会冻结。我怀疑通知ID或丢失标志但到目前为止没有找到解决方案的运气。
答案 0 :(得分:2)
当您的活动为singleTop
或在FLAG_ACTIVITY_SINGLE_TOP
中使用Intent
标记进行调用时,新的Intent
对象将传递给onNewIntent
方法你的活动是否已经在运行因此,您需要覆盖活动中的onNewIntent
方法,该方法将从通知中接收新的Intent
对象。因此,您可以相应地更新您的活动。