android - 每 60*1000 毫秒调用一次 API
问题描述
我正在编写代码,我需要在前台和后台每 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 个小时,直到应用程序被破坏。
解决方案
一种选择是使用唤醒锁。这是文档中的一个示例:
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
您Activity
的AndroidManifest
来源:https ://stackoverflow.com/a/3723649/9819031
推荐阅读
- python - 正则表达式搜索熊猫数据框中的整列
- javascript - Webpack 5 - 来自 node_modules 的安静警告?
- reactjs - 从 inputComponent 捕获 onChange 事件传递给 OutlinedInput,Material UI
- python - 线程内的异步函数
- python - 使用 Libvirt Python createXMLFrom 克隆卷导致读取数据时文件结束:输入/输出错误
- mongodb - 更改对象数组中对象中的字段
- json - 通过 Codable 将 JSON 解析为数组
- python - 没有为变量张量流提供梯度
- npm - 我无法创建一个反应应用程序,它一直给我一个错误
- reactjs - react-testing-library:测试评估发生得太早