我正在编写代码,我需要在独立于 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:keepScreenOn
在 AndroidManifest
中为您的 Activity
来源:https://stackoverflow.com/a/3723649/9819031
关于android - 每 60*1000 毫秒调用一次 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53943114/