2014-09-23 4 views
1

У меня есть работа с гнездом UDP на порту. Если я нажимаю кнопку «Домой», активность идет в фоновом режиме, OnPause() и Вызывается метод OnStop(). Теперь я хочу возобновить свою работу, когда получаю некоторый пакет UDP. Чтение другие сообщения Я понимаю, что надо:Android: возобновление действия singleTask

  1. объявить деятельность как android:launchMode="singleTask" (или singleInstance)
  2. Затем, когда я хочу возобновить деятельность:
 
Intent intent = new Intent(this.getApplicationContext(), myActivity.class); 

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 

startActivity(intent); 

Это решение не работает. Вызов startActivity(intent) не показывает мою активность на переднем плане и onResume() не вызывается.

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

 
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
+0

Ваш udp-сокет находится в обслуживании, не так ли? – njzk2

+0

Сокет находится в обслуживании, когда основное действие закрыто. Когда я создаю основное действие, сокет не подключается к службе, и основное действие связывает его. – peregrinus

ответ

0

Для того, чтобы привести свою собственную задачу на передний план, вам нужно вызвать startActivity() на контексте неактивности, например:

getApplicationContext().startActivity(intent); 

Кроме того, вам не нужно использовать какие-либо специальный режим запуска (singleTask или singleInstance) для этого.

Это ошибка Android, исправленная в Android 4.4. Поскольку этот вопрос с 2014 года, я буду считать, что ОП видит эту проблему.

См. How to resume Android Activity programmatically from background и комментарий к теме.

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