Java 从正在进行的通知启动活动会在第二次启动时崩溃

Java 从正在进行的通知启动活动会在第二次启动时崩溃,java,android,Java,Android,我有一个应用程序,它使用持续的通知让用户知道它正在运行。这很方便,因为它需要一直在后台运行才能接收消息。该应用程序主要由一个包含多个片段的活动和两个服务组成 这是我用来显示和更新通知的方法。它在名为Notifications.java的类中实现 它的方法在MainActivity的onResume中调用,也被接收消息的服务调用 public static void updateOngoingNotification(Context c, String text) { Intent int

我有一个应用程序,它使用持续的通知让用户知道它正在运行。这很方便,因为它需要一直在后台运行才能接收消息。该应用程序主要由一个包含多个片段的活动和两个服务组成

这是我用来显示和更新通知的方法。它在名为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());
}

问题是,一切似乎都正常工作,但当我第二次尝试启动活动时,应用程序冻结了。我怀疑通知ID或缺少标志,但到目前为止没有找到解决方案。

当您的活动是
singleTop
或您在
意图中使用
FLAG\u activity\u SINGLE\u TOP
标志调用它时,新的
Intent
对象将被传递给活动的
onNewIntent
方法(如果该方法已在运行)。因此,您需要重写活动中的
onNewIntent
方法,该方法将从通知中接收新的
Intent
对象。因此,您可以相应地更新您的活动


Ref:

它崩溃了吗?或者你有日志吗?谢谢你的快速回答。它起作用了,但我必须将标志设置为intent.setFlags(intent.FLAG_ACTIVITY_SINGLE_TOP | intent.FLAG_ACTIVITY_CLEAR_TOP);这不是我上面发布的代码的一部分。然而,这个解决方案对我的应用程序很好。谢谢!:)很高兴它帮助了你:)