CountDownTimer не работает в IntentService

Я использую библиотеку wakefullintentservice . Пока он отлично работал, я использовал эту библиотеку во многих проектах.

Но знаю, что в моем приложении я использую CountDownTimer Class.I не знаю, почему он не работает. Я пытаюсь отлаживать, он не запускает код CountDownTimer. После вызова countDownTimer.start (); Ничего не произошло, только что выпустил блокировку.

Любая помощь должна быть исправлена. Спасибо заранее.

Пожалуйста, я просто хочу сделать некоторые работы в IntentService с 1 Sec Delay.mean, если он может быть без использования CountDownTimer, пожалуйста, скажите мне ..

Вот мой код

public class AppService extends WakefulIntentService { Context ctx; private CountDownTimer countDownTimer; List<GCMessagingUtils> gcmessagelist; public static final String Tag="AppService.java"; private long startTime; int index = 0; private final long interval = 1 * 1000; public AppService() { super("AppService"); } @Override protected void doWakefulWork(Intent intent) { Log.e(Tag, "doWakefulWork"); OnAlarmReceiver.isSendingDataOn = true; ctx = getApplicationContext(); DatabaseHandler db = new DatabaseHandler(ctx); gcmessagelist = db.getAllGCMessages(); startTime = gcmessagelist.size() * 1000; countDownTimer = new MyCountDownTimer(startTime, interval); countDownTimer.start(); } public class MyCountDownTimer extends CountDownTimer { public MyCountDownTimer(long startTime, long interval) { super(startTime, interval); } @Override public void onFinish() { OnAlarmReceiver.isSendingDataOn = false; } @Override public void onTick(long millisUntilFinished) { Log.e(Tag,"Inside OnTick"); if (index < gcmessagelist.size()) { GCMessagingUtils gcmessage = gcmessagelist.get(index); //Do Some Work index++; } } } 

}

Задача решена:

С решением pskink

Надеюсь, это поможет кому-то.

I Just Place Looper.loop () в конце функции doWakefulWork. Таким образом, мой код будет выглядеть так.

 * * countDownTimer = new MyCountDownTimer(startTime, interval); countDownTimer.start(); Looper.loop() } 

И в конце CountDownTimer Quit The Looper

  @Override public void onFinish() { OnAlarmReceiver.isSendingDataOn = false; Looper.myLooper().quit(); } 

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

В вашем коде, как только doWakefulWork выйдет, IntentService завершится. В результате ваш CountDownTimer будет завершен вместе с IntentService .