Android-сервис + обратный отсчет = не работает - PullRequest
4 голосов
/ 23 ноября 2011

Хорошо, это очень разозлило меня.Существуют ли ограничения для служб с обратным отсчетом?

Я пробовал так много способов заставить таймер обратного отсчета работать в службе, но он всегда дает сбой.Это просто никогда не доходит до финиша ()!

Так есть ли ограничения на услуги и обратные отсчеты или что?Пожалуйста, помогите мне ...

Вот сервис:

public class ss extends IntentService {

      public ss() {
          super("ss");
      }

      @Override
      protected void onHandleIntent(Intent intent) {

        new CountdownTimer(30000, 1000) {

     public void onTick(long millisUntilFinished) {

     }

     public void onFinish() {
         executemymethod(); //it never gets here!
     }
  }.start();

      }



}

Как видите, код прост и корректен, но все же executemymethod ();никогда не выполняется на самом деле!Там нет ошибок ... Пожалуйста, дайте мне решение!

1 Ответ

4 голосов
/ 23 ноября 2011

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

Клиенты отправляют запросы через вызовы startService (Intent); служба запускается по мере необходимости, обрабатывает каждое намерение по очереди, используя рабочий поток, и останавливается, когда заканчивается его работа.

Поскольку обратный отсчет является асинхронным, работа завершается после запуска таймера обратного отсчета. Затем IntentService немедленно завершает работу и, вероятно, завершает работу потока.

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