我正在使用
wakefullintentservice库.
到目前为止它完美地工作我在许多项目中使用了这个库.
但在我的应用程序中知道我正在使用CountDownTimer类.我不知道为什么它不起作用.
我尝试通过它调试不启动CountDownTimer代码.
在调用countDownTimer.start()之后;
什么都没发生刚刚发布锁称.
应该给予任何帮助.
谢谢你的提前.
我只是想在IntentService中做一些工作,如果它可以在没有CountDownTimer的情况下关闭,请告诉我..
这是我的代码
public class AppService extends WakefulIntentService {
Context ctx;
private CountDownTimer countDownTimer;
List 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();
}