Нажатие на свернутое приложение уведомлений перезапустит - PullRequest
0 голосов
/ 21 ноября 2018

Я рассмотрел много информации по этой проблеме, но никто не может ее решить.

На устройствах Android 7.0 при использовании NotificationManager для отправки более 5 сообщений все сообщения будут свернуты.

Пожалуйста, нажмите на изображение, чтобы увидеть, что сообщение свернуто.

Когда я нажму на это свернутое сообщение панели уведомлений, мое приложение будет перезагружено в процессе входа в систему, даже если мойприложение вошло в систему и работает на переднем плане. Это ужасно. Если я щелкну одно сообщение на панели уведомлений, то оно будет нормально отображать активность.

Как настроить сообщение панели уведомлений не сворачиваться или когдаЯ нажимаю на свернутое сообщение панели уведомлений, не перезагружая приложение.это мой код:

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);

Я установил TestActivity

 android:launchMode="singleTop"

1 Ответ

0 голосов
/ 22 ноября 2018

Я нашел проблему, а не то, что я думал.Приложение не перезапускается. Только LoginActivity был воссоздан один раз и помещен в верхнюю часть стека. Я обеспокоен тем, что другие люди думают так же, как и я, и считают, что приложение было перезапущено, поэтому я не буду менять этот вопрос.надеюсь помочь людям, у которых возникла эта проблема. Я опубликую решение ниже.

Когда вы нажимаете на свернутое сообщение панели уведомлений, предполагайте, что ваша LoginActivity была воссоздана. Вам нужно написать следующий код в onCreate ofLoginActivity

 @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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...