Как перезапустить, а не воссоздать активность после нажатия уведомления в Android? - PullRequest
0 голосов
/ 31 декабря 2018

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

В настоящее время уведомление созданов BroadcastReceiver.Это раздел, где я добавил Intents к уведомлению.

NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
Intent resultIntent = new Intent(context, CurrentActivity.class);
resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK  );
PendingIntent resultPendingIntent = PendingIntent.getActivity(
    context,
    0,
    resultIntent,
    PendingIntent.FLAG_UPDATE_CURRENT);
Notification.Builder builder = new Notification.Builder(getApplicationContext());
builder.setContentIntent(resultPendingIntent);

Прямо сейчас, то, что это делает, уничтожает мой CurrentActivity, вызывая метод onDestroy(), затем вызывает onCreate(), чтобы создать новыйпример.Это проблема для меня, так как мой onDestroy() освобождает мой BoundService от моей деятельности.Я бы предпочел, чтобы моя активность просто перезапускалась (onStop(), затем onRestart(), затем onStart()), чтобы мои методы onCreate() и onDestroy() могли обрабатывать привязку и отмену привязки, а мой метод onStart() обрабатывает изменения пользовательского интерфейса..

Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Попробуйте установить флаг активности на

resultIntent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

См. Официальный документ с флагом здесь: https://developer.android.com/reference/android/content/Intent#FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

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

0 голосов
/ 31 декабря 2018

Я думаю, вы могли бы по-другому установить флаги намерений для достижения желаемого поведения.

resultIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

При необходимости обрабатывайте изменения пользовательского интерфейса в вашей активности onResume.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...