我正在使用wakefullintentservice库。到目前为止,它运行良好,我在许多项目中都使用了这个库。
但知道在我的应用程序中我正在使用 CountDownTimer 类。我不知道它为什么不起作用。我尝试调试它没有启动 CountDownTimer 代码。在调用countDownTimer.start(); 什么都没有发生,只是释放了调用的锁。
应感谢任何帮助。谢谢是提前。
我只是想在 IntentService 中做一些工作,延迟 1 秒。意思是如果它可以在没有 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++;
}
}
}
}
问题解决了:
希望它会帮助一些人。
我只是将 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();
}