我需要构建一个每10/15分钟运行一次的后台任务(无关紧要,或者很好),即使应用程序是没有运行。Android - 每15分钟运行一次后台任务,即使应用程序没有运行
我该如何做到这一点?我似乎无法绕过这个包裹。
我读过我可以使用某种runnable()功能或使用后台服务或AlarmManager。我正在考虑后台服务,因为它也必须在应用程序本身没有运行时完成。
什么是更好的方式做到这一点,我怎么能做到这一点?
我需要构建一个每10/15分钟运行一次的后台任务(无关紧要,或者很好),即使应用程序是没有运行。Android - 每15分钟运行一次后台任务,即使应用程序没有运行
我该如何做到这一点?我似乎无法绕过这个包裹。
我读过我可以使用某种runnable()功能或使用后台服务或AlarmManager。我正在考虑后台服务,因为它也必须在应用程序本身没有运行时完成。
什么是更好的方式做到这一点,我怎么能做到这一点?
你已经确定了执行代码片段的时间量(时间间隔),它更好地使用AlarmManager,因为它更节能。如果你的应用需要听某种事件,那么服务就是你需要的。
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
}
报警管理器(系统服务)与远程服务与内部警报实现(单独的过程)?
报警管理是你的选择,因为它已经拥有你需要什么,你只需要设置闹钟间隔
您也可以通过SyncAdapter 这里做到这一点是你看,并从中得到启发
样本
但是,即使应用程序本身没有运行,这是否允许我执行代码? – DijkeMark 2013-04-22 19:30:24
是的。报警管理器就像,你(应用程序)告诉操作系统你想在X毫秒后做一些事情。然后系统在BroadcastReciever.onRecieve()中执行该代码,该代码是您希望在x毫秒后在后台执行的代码。 – wtsang02 2013-04-22 19:32:22
它的工作,真的很不错,但是,停止服务呢? am.cancel()?或..谢谢@ wtsang02 – 2015-05-19 16:05:30