Android的 - 运行一个后台任务每15分钟,即使应用程序没有运行(Android - Runn

2019-08-31 19:30发布

我需要建立一个运行每10/15分钟(其实并不重要,无论是好的)一个后台任务,即使在应用程序没有运行。

我怎样才能做到这一点? 我似乎不能回绕这个我的头。

我读我可以使用某种形式的可运行()功能或使用后台服务或AlarmManager。 我在想一个后台服务的,因为它也必须在应用程序本身没有运行来完成。

什么是这样做的更好的办法,我怎么能这样做呢?

Answer 1:

你已经有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

}


Answer 2:

报警管理器(系统服务)与具有内报警实现(独立进程)远程服务?

报警管理是你的选择,因为它已经拥有你需要什么,你只需要设置闹钟间隔



Answer 3:

您也可以通过SyncAdapter实现这一这里是您看看,并得到启发样本

SyncAdapter样本



Answer 4:

最好的办法是引入了在谷歌I / O 2018 - WorkManager中 。

你可以找到的文档在这里 。



文章来源: Android - Running a background task every 15 minutes, even when application is not running