wakefullintentserviceライブラリを使用しています。これまでのところ、完全に機能していましたが、このライブラリを多くのプロジェクトで使用しました。
しかし、私のアプリケーションでは CountDownTimer クラスを使用していることを知っています。なぜそれが機能していないのかわかりません。CountDownTimerコードを開始していないことでデバッグしようとしています。countDownTimer.start();を呼び出した後。 呼び出されたロックを解放しただけで何も起こりませんでした。
どんな助けでも感謝されるべきです。よろしくお願いします。
親切に、1秒の遅延でIntentServiceでいくつかの作業をしたいだけです.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のソリューションで
それが誰かを助けることを願っています。
doWakefulWork 関数の最後に Looper.loop() を配置するだけなので、コードは次のようになります。
*
*
countDownTimer = new MyCountDownTimer(startTime, interval);
countDownTimer.start();
Looper.loop()
}
そして、CountDownTimer 終了で Quit The Looper
@Override
public void onFinish() {
OnAlarmReceiver.isSendingDataOn = false;
Looper.myLooper().quit();
}