Android подключиться к запущенной теме - PullRequest
0 голосов
/ 01 июля 2011

Я создаю приложение с UIThread и фоновым потоком. Фоновый поток в основном используется в качестве таймера - каждую секунду он отправляет сообщение в UIThread для обновления пользовательского интерфейса. Когда пользователь выходит из приложения, нажимая кнопку, поток продолжает работать. Я хочу, чтобы это произошло, поскольку пользователь может захотеть открыть другое приложение, пока таймер продолжает обратный отсчет.

У меня вопрос, когда пользователь возвращается в мое приложение. Я хочу подключиться к фоновому потоку, который работает, чтобы отобразить текущее состояние приложения - сколько времени осталось и т. Д. У меня вопрос, как подключиться к потоку, который все еще работает в фоновом режиме. Я пытался использовать Thread и AsyncTask, но возникает та же проблема.

Спасибо за любую помощь, которую вы можете предоставить.

Ответы [ 3 ]

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

Ваш поток все еще вращается совершенно случайно - ваше приложение на самом деле все еще работает, но оно и поток будет остановлен, когда Android решит, что ему нужны ресурсы.

Однако то, что вы хотите сделать, хорошо-предусмотрено в Android - вам нужно внедрить Сервис, чтобы иметь процесс, который работает в фоновом режиме отдельно от вашего приложения.Вы даже можете запустить службу при загрузке и запускать независимо от того, запущено ваше приложение или нет.

В этом http://developer.android.com/reference/android/app/Service.html содержится большая часть того, что вам нужно знать.Чтобы установить связь между Сервисом и активностью переднего плана, вам необходимо привязать интерфейс сервиса, что, к счастью, очень легко сделать.

0 голосов
/ 01 июля 2011

Система Android обеспечивает трансляцию события каждую минуту, это вызов TIME_TICK.

Вам необходимо:

  • Создать сервис.Это рекомендуемый способ запуска части приложения в фоновом режиме
  • Прослушивание события TIME_TICK.Это будет потреблять меньше батареи.( Телефон не разбудит, хотя , поэтому используйте также ALARM)
  • Добавить будильник (чтобы разбудить телефон при необходимости)
  • Позвольте UIи сервис взаимодействует.Вам необходим обратный вызов через rpc (см. Последний пример обратного вызова на странице API)

Вы также должны убедиться, что телефон может спать в течение периода времени.Таким образом, вы можете захотеть вычислить состояние как дельту между начальной точкой и сейчас, вместо того, чтобы постоянно обновлять состояние.

0 голосов
/ 01 июля 2011

Первое, что приходит на ум, - это изменить поток таймера на Сервис и привязать интересующие его приложения к этому сервису. Основываясь на документации Android и предложенном дизайне приложения, вы не можете полагаться на то, что не будет уничтожен ОС, когда сочтет это необходимым.

http://developer.android.com/guide/topics/fundamentals/services.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...