管理服务内部的BLE扫描(应该使用处理程序还是作业?)

时间:2019-03-05 08:54:37

标签: android bluetooth handler job-scheduling foreground-service

我正在做一项将执行以下操作的服务:

  1. 启动时会启动一个新线程,首先在该线程中调度作业 间隔为“ Z”,它将发送存储在域中的所有RSSI

  2. 然后每'N'秒启动蓝牙扫描,持续'X'秒 并将找到的所有BLE标签存储在Realm DB中。停止和开始 扫描是通过 Handler 处理的。

但是我有一个问题是哪种方法最好:

  1. 使用 FOREGROUND服务,这将启动一个新线程,其中 我通过时间间隔安排工作来发送数据,然后 我开始扫描,并设置了一个延迟'X'秒的处理器, 延迟后停止扫描,然后在我停止扫描时设置 处理程序延迟'N'秒,因此在'N'秒后,他将 再次开始扫描

  2. 也使用计划作业来执行扫描操作

实际上我正在使用FIRST选项,但是我想知道第二秒是否会消耗更少的电量,然后电池会工作更多,或者处理程序是否消耗大量电池。

在谷歌上搜索,我发现处理程序 AlarmManager 更好,因为 AlarmManager 会一直消耗功率直到达到设定的时间,因此处理程序消耗的电量少于 AlarmManagers

但是关于处理程序计划的作业

我看到当我以前台身份启动服务时,我总是在屏幕上看到通知,因此我不知道是否在中使用 Handlers 前景服务将比计划作业消耗更多的电量。

请记住,我需要我的服务永不停止,并且必须在“ N”秒后开始扫描“ X”秒! 因此,我不确定是否可以在计划作业中获取它,如果可以,我不确定选项1是否优于2或选项2是否优于选项1。

非常感谢! 编码不错! :D

0 个答案:

没有答案