android - 即使我的应用程序不存在于“最近”中,哪个是 android 中最好的时间调度程序?
问题描述
我正在使用警报管理器,但执行取决于他的心情,有时警报管理器工作,有时它不工作。下面是带有待处理意图的警报管理器代码
AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(SetupFakeVideoCall.this, MyBroadcastVideoReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(SetupFakeVideoCall.this, 0, intent, 0);
Calendar time = Calendar.getInstance();
time.setTimeInMillis(System.currentTimeMillis());
time.add(Calendar.SECOND, afterTimeVid);
assert alarmMgr != null;
alarmMgr.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis(), pendingIntent);
afterTimeVid 是我给它执行的时间。
例如 afterTimeVid = 1500 持续 15 秒
解决方案
调用AlarmManager.set()
不准确。它曾经是精确的(在 API 19 之前),但随着时间的推移已经改变,以延长电池寿命。
如果您需要闹钟在准确的时间响起,那么您需要使用AlarmManager.setExact()
. 如果您查看文档,AlarmManager
会有很多关于如何使用它的提示。一般来说,不鼓励设置准确的警报,因为这会阻止 Android 使用其省电技术。
推荐阅读
- javascript - styled-components - 酶浅快照
- ios - 使用 Alamofire 从 api 获取响应时的问题
- php - 在php中使用连接赋值运算符之前是否需要定义一个变量?
- php - 没有 slug 的 URL 重写(我正在使用 API)
- javascript - 无法通过 selenium webdriver 单击复选框。获取错误元素不可见
- php - 每行显示 3 个产品
- rust - 创建语法扩展时未解决的导入错误 E0432
- ajax - 从静态向控制器发送 HTTP 请求
- c# - C#:以字符串格式比较两个具有时间的列表值并仅提取较大的值
- typescript - TypeScript 高级类型检查