Вот что у меня есть:AlarmManager не запускается активность (если она существует)
Intent intent = new Intent();
intent.setClass(context,SomeActivity.class);
PendingIntent pending = PendingIntent.getActivity(context,requestCode,intent,PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarm = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, someDistantMillis, someIntervalInMillis,pending);
Он работает нормально, то есть активность запускается на someDistantMillis
и неоднократно запущен после someIntervalInMillis
Единственная проблема заключается в том, если SomeActivity
уже запущен после someIntervalInMillis
другой экземпляр SomeActivity
запускается поверх стека.
Вот вкратце то, что я хочу добиться:
- Strart,
AlarmManager
называется - если экземпляр
SomeActivity
уже запущен, то Гото 4) еще Гото 3) - Launch
SomeActivity
, конец - ничего не делать, конец
Любые идеи о том, как это сделать, o r какие флаги должны включать Intent
(FLAG_ACTIVITY_SINGLE_TOP
не работает)?
попробуйте добавить 'android: launchMode =" singleInstance "' в тег активности в манифесте. –
Является ли SomeActivity основной деятельностью (с ACTION = MAIN и CATEGORY = LAUNCHER) вашего приложения? –
@PankajKumar, пожалуйста, не предлагайте 'launchMode =" singleInstance "', не получая при этом много других данных. Использование этого режима запуска может решить эту конкретную проблему, но, скорее всего, создаст массу других проблем для пользователя. В общем, режим запуска SingleInstance должен использоваться только в особых обстоятельствах (например, замена HOME-screen). ИМХО это плохой совет. –