Вот мой сценарий:
- Я показываю уведомление, которое не подлежит очистке (
FLAG_NO_CLEAR
), - Я устанавливаю отложенное намерение, которое запускает
Activity
, - В запущенном
Activity
пользователь что-то нажимает, а я запускаю еще один Activity
, - Повторное нажатие на уведомление не запускает / не показывает
Activity
в ожидаемом намерении , что очень раздражает.Я бы хотел, чтобы начальный Activity
был либо перезапущен, либо перенесен на фронт.Однако я не могу этого достичь.
Соответствующий код для уведомления:
Intent i = new Intent(this, RemindersActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // the docs say this is required
PendingIntent pi = PendingIntent.getActivity(this, 0, i, 0);
n.setLatestEventInfo(this, getString(R.string.app_name), text, pi);
После этого это просто нормально startActivity()
(на шаге 3).Вот что я получаю в logcat:
I/ActivityManager( 147): Starting activity: Intent { flg=0x10000000 cmp=my.package/my.package.RemindersActivity bnds=[0,387][480,483] }
W/InputManagerService( 147): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@45a33fc8
Есть идеи, как это исправить?Единственное, что мне приходит в голову, - это использовать намерение вещания вместо намерения действия (и запустить действие из получателя), но я даже не уверен, что это сработает.