我需要建立一个运行每10/15分钟(其实并不重要,无论是好的)一个后台任务,即使在应用程序没有运行。
我怎样才能做到这一点? 我似乎不能回绕这个我的头。
我读我可以使用某种形式的可运行()功能或使用后台服务或AlarmManager。 我在想一个后台服务的,因为它也必须在应用程序本身没有运行来完成。
什么是这样做的更好的办法,我怎么能这样做呢?
我需要建立一个运行每10/15分钟(其实并不重要,无论是好的)一个后台任务,即使在应用程序没有运行。
我怎样才能做到这一点? 我似乎不能回绕这个我的头。
我读我可以使用某种形式的可运行()功能或使用后台服务或AlarmManager。 我在想一个后台服务的,因为它也必须在应用程序本身没有运行来完成。
什么是这样做的更好的办法,我怎么能这样做呢?
你已经有detemined时间(间隔)的量来执行的一小段代码,它能够更好地使用AlarmManager ,因为它更多的能量EFFIENT。 如果您的应用需要听一些不大不小的事件,那么服务就是你所需要的。
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实现这一这里是您看看,并得到启发样本
SyncAdapter样本
最好的办法是引入了在谷歌I / O 2018 - WorkManager中 。
你可以找到的文档在这里 。