我需要实施一项服务,需要定期执行一项简短任务。我已经使用sendmessagedelayed的处理程序来实现循环。它有效,但是有更好的方法吗?

@Override
    public boolean handleMessage(Message arg0) {
         //do something
         Message msgtx=Message.obtain();
         handler.sendMessageDelayed(msgtx, updaterate);
         return true;
    }

最佳答案

如果任务执行了,例如每X分钟或更长时间执行一次,则可以使用处理程序。如果任务执行之间的延迟较大(几小时左右),建议使用AlarmManager

long now = System.currentTimeMillis();
long interval = XXX;// time in milisecs for the next execution
Intent i = new Intent();
i.setClass(this, YourService.class);
i.setAction("some_action_to_indicate_the_task");
PendingIntent pi = PendingIntent.getService(this, 0, i, 0);
AlarmManager alarmMgr = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmMgr.set(AlarmManager.RTC_WAKEUP, now + interval, pi);

关于android - 实现循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5241624/

10-13 04:24