4

我正在使用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++;
        }
    }
}

}

问题解决了:

使用pskink的解决方案

希望它会帮助一些人。

我只是将 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();
}
4

1 回答 1

1

据我所知,这归结为如何IntentService工作。基本上,当您启动IntentService它时,它会创建一个工作线程来完成它需要做的任何工作,然后它将自行终止。

在您的代码中,一旦doWakefulWork退出,IntentService就会终止。因此,您的CountDownTimer将与IntentService.

于 2013-10-02T08:39:36.410 回答