Намерение уведомления не запускается в угловых случаях - PullRequest
0 голосов
/ 04 июля 2011

Вот мой сценарий:

  1. Я показываю уведомление, которое не подлежит очистке (FLAG_NO_CLEAR),
  2. Я устанавливаю отложенное намерение, которое запускаетActivity,
  3. В запущенном Activity пользователь что-то нажимает, а я запускаю еще один Activity,
  4. Повторное нажатие на уведомление не запускает / не показывает 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

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

1 Ответ

1 голос
/ 04 июля 2011

Однако я не могу этого достичь.

Попробуйте добавить FLAG_ACTIVITY_REORDER_TO_FRONT или комбинацию FLAG_ACTIVITY_CLEAR_TOP и FLAG_ACTIVITY_SINGLE_TOP к Intent.

...