Android - 每 15 分钟运行一次后台任务,即使应用程序未运行也是如此

2022-09-02 12:59:42

我需要构建一个每 10/15 分钟运行的后台任务(这并不重要,两者都很好),即使应用程序未运行也是如此。

我该如何做到这一点?我似乎无法将我的头缠绕在这件事上。

我读到我可以使用某种runnable()功能或使用后台服务或AlarmManager。我正在考虑后台服务,因为它也必须在应用程序本身未运行时完成。

什么是更好的方法来做到这一点,我该怎么做?


答案 1

您已经确定了执行代码片段的时间(间隔),最好使用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

}

答案 2

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

警报管理器是您的选择,因为它已经具有您需要的内容,您只需要设置警报间隔