2013-08-06 3 views
1

У меня есть Activity и IntentServiceПерезапуск активность от IntentService если активность работает

Activity называет IntentService и когда IntentService закончил я хочу, чтобы перезапустить активность. Но только если он в настоящее время находится на экране. когда он снова открывается (только onResume()) и не создается новый экземпляр, он также должен перезапускаться.

Итак, что является лучшим способом практиковать это?

ответ

0

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

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

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

android:launchMode="singleTask" 

или

android:launchMode="singleInstance" 

This post объясняет разницу, если вы хотите, чтобы узнать подробности.

+0

проблема заключается в том, что я должен перезапустить Activity, потому что макет генерируется кодом и ему приходится загружать новые данные из базы данных, потому что я не могу найти явные представления, которые я хочу. И когда пользователь выходит из приложения, intenservice все еще работает и выполняет свою работу. и пользователь получает уведомление, когда intenservice закончил. поэтому я не хочу раздражать пользователя, чтобы начать свое приложение, когда он в настоящее время находится в другом, так что это будет плохая практика, я думаю. – maysi

Смежные вопросы