我需要构建一个每10/15分钟运行一次的后台任务(这并不重要,也很好),即使应用程序没有运行。
我如何才能做到这一点呢?我似乎不能理解这件事。
我读到我可以使用某种runnable()功能,或者使用后台服务或AlarmManager。我在考虑后台服务,因为它也必须在应用程序本身不运行时完成。
做这件事有什么更好的方法?我该怎么做?
发布于 2013-04-23 03:25:12
您已经确定了执行一段代码的时间(间隔),最好使用AlarmManager,因为它的能效更高。如果你的应用需要监听某种事件,那么Service就是你所需要的。
public static void registerAlarm(Context context) {
Intent i = new Intent(context, YOURBROADCASTRECIEVER.class);
PendingIntent sender = PendingIntent.getBroadcast(context,REQUEST_CODE, i, 0);
// We want the alarm to go off 3 seconds from now.
long firstTime = SystemClock.elapsedRealtime();
firstTime += 3 * 1000;//start 3 seconds after first register.
// Schedule the alarm!
AlarmManager am = (AlarmManager) context
.getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,
600000, sender);//10min interval
}
发布于 2013-04-23 03:33:58
Alarm Manager (系统服务)与具有内部警报实现的远程服务(独立进程)?
Alarm Manager是您的选择,因为它已经具备您需要的功能,您只需设置报警间隔
发布于 2013-04-23 03:40:23
您也可以通过SyncAdapter来实现这一点。这里是一个示例,供您查看并获得灵感
https://stackoverflow.com/questions/16155032
复制相似问题