每60 * 1000毫秒调用一次API

时间:2018-12-27 10:00:48

标签: android timer alarmmanager scheduler

我正在研究需要独立于活动/片段每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个小时的时间内不延迟数毫秒,直到应用被销毁为止。

1 个答案:

答案 0 :(得分:1)

一种选择是使用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();

这可以防止屏幕锁定

或者您可以在Activity中将AndroidManifest用于@model MyModelType <label class="control-label">@Model.FieldName</label> <input asp-for="EmployeeName" class="form-control" />
来源:android:keepScreenOn