单击折叠的通知消息应用程序将重新启动

时间:2018-11-21 09:32:02

标签: android notifications

我已经审查了很多有关此问题的信息,但是没有人能解决它。

在android 7.0设备上,当使用NotificationManager发送多于5条消息时,所有消息将被折叠。

Please click on the image to see the message is collapsed.

当我单击此折叠的通知栏消息时,即使我的应用程序已登录并在前台运行,我的应用程序也将重新启动进入登录活动,这很糟糕。如果我单击单个通知栏消息,则它将正常进入活动。

如何将通知栏消息设置为不折叠,或者当我单击折叠的通知栏消息时,请勿重新启动应用程序。 这是我的代码:

$> cd PATH_TO_YOUR_PROJECT_DIR

我设置了TestActivity

Intent notifyIntent;
PendingIntent appIntent;
notifyIntent = new Intent(context, TestActivity.class);
notifyIntent.putExtra("content", contentJson);
appIntent = PendingIntent.getActivity(context,
            noticeId, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "program").setAutoCancel(true)
            .setSmallIcon(iconId)
            .setContentTitle(notifyTitle)
            .setDefaults(Notification.DEFAULT_ALL)
            .setNumber(noticeId)
            .setPriority(NotificationCompat.PRIORITY_MAX)
            .setGroupSummary(false)
            .setContentIntent(appIntent);
    builder.setVisibility(Notification.VISIBILITY_PUBLIC);
    builder.setColorized(true);
    Notification myNoti = builder.build();
    myNoti.flags = NotificationCompat.FLAG_INSISTENT | Notification.FLAG_AUTO_CANCEL;
    if (noticeId > 40) {
        noticeId = 0;
        notificationManager.cancelAll();
    }
    notificationManager.notify(noticeId, myNoti);

1 个答案:

答案 0 :(得分:0)

我发现了问题,而不是我的想法。应用程序未重新启动。仅重新创建了一次LoginActivity并将其放置在堆栈的顶部。我担心其他人与我的想法相同,并认为该应用程序已重新启动,因此我不会更改此问题。希望能帮助有此问题的人。我将解决方法放在下面。

单击折叠的通知栏消息时,假定已重新创建LoginAtivity。您需要在LoginActivity的onCreate中编写以下代码

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (!isTaskRoot()) {
        finish();
        return;
    }
    setContentView(R.layout.activity_main_menu);
}

isTaskRoot()将检测此类是否在堆栈的根目录中。否则,请完成。

请注意,如果onDestory中包含逻辑,请使用isTaskToot()确定,例如:

@Override
protected void onDestroy(){
    super.onDestroy();
    if (isTaskRoot()) {
        //your code
    }
}