android - 每 60*1000 毫秒调用一次 API

标签 android timer alarmmanager scheduler

我正在编写代码,我需要在独立于 Activity/fragment 的前台和后台每 60*1000 毫秒调用一些 api。

我尝试过使用处理程序和各种其他解决方案,如作业调度程序等。当设备连接到电源或设备屏幕唤醒时,我的解决方案工作正常,但当设备被锁定时,它无法正常工作。目前我在应用程序类中使用下面提到的逻辑

Handler minuteHandler = new Handler();
minuteHandler.postDelayed(runnable, 60*1000);
final Runnable runnable = new Runnable() {
    @Override
    public void run() {
        // method to call api
        minuteHandler.removeCallbacks(runnable);
        minuteHandler.postDelayed(runnable, 60*1000);
    }
};

解决方案很简单,因为我需要每 60*1000 毫秒调用一次 api,而不会滞后 8 到 10 个小时,直到应用程序被销毁。

最佳答案

一个选择是使用 wake lock .这是文档中的示例:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();

// screen and CPU will stay awake during this section
wl.release();

这可以防止屏幕锁定

或者您可以使用 android:keepScreenOnAndroidManifest 中为您的 Activity
来源:https://stackoverflow.com/a/3723649/9819031

关于android - 每 60*1000 毫秒调用一次 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53943114/

相关文章:

javascript - 到达对象的属性

java - 设置当前或 future 日期的闹钟

java - 取消具有不同上下文的警报

Java Android 互联网访问 : WIFI or 3G

java - 安卓加速计

linux - 如何停止linux定时器?

timer - STM32 HAL定时器中断未触发

android - 我如何在android中设置多个闹钟

Android:以编程方式在 API 24+ 中打开概览/最近屏幕

Android SuperPowered SDK 音频 - 频域示例 - memset 频率操作