让我们想象一下,该服务每15分钟运行一次,然后Android进入睡眠状态1个小时,当再次虚弱时,该服务将一次执行4次。如果由于睡眠而错过了1个或多个周期,则首选的行为将仅运行一次服务。
要定期运行我的代码,我正在使用TimerTask:
public class updateService extends IntentService {
public int onStartCommand(@Nullable Intent intent, int flags, int startId) {
if(mTimer != null) {
mTimer.cancel();
}
mTimer = new Timer();
int timer = getPreference("refresh_interval") * 1000;
mTimer.scheduleAtFixedRate(new updateTask (), timer, timer);
return super.onStartCommand(intent, flags, startId);
}
class updateTask extends TimerTask {
@Override
public void run() {
// run on another thread
mHandler.post(new Runnable() {
@Override
public void run() {
// Do job
}
});
}
}
}
我将对如何做得更好的任何建议表示感谢。谢谢!
我已实施了一项后台服务来定期更新我的应用程序中的数据。如果我的android设备已打开,但该机制运行良好,但是在Android处于睡眠模式时会导致问题:让我们想象一下...
Timer.scheduleAtFixedRate(TimerTask task, long delay, long period)
,它在其文档中进行了解释: