0

我正在开发一个从用户那里获得最高温度的应用程序。它会持续监控电池的当前温度。一旦温度超过用户提供的最高温度,它应该通知用户。

我设计了布局,编写了逻辑来存储用户的温度,我知道我可以使用 EXTRA_TEMPERATURE 监控温度。但是,此应用程序应在后台运行。由于我必须始终监控温度,因此从逻辑上讲,服务应该始终运行。

在阅读论坛上,我知道这会大量消耗电池电量,并且大多数情况下可以在屏幕打开时运行服务。但是,我想知道是否可以在不耗尽电池的情况下在后台使用该服务。或者有没有其他方法可以实现这一目标?

我的应用与此类似:创建激活后在后台运行的温度感应 Android 应用

4

1 回答 1

1

由于我必须始终监控温度,因此从逻辑上讲,服务应该始终运行。

伊克。

或者有没有其他方法可以实现这一目标?

第 1 步:允许用户选择轮询周期(一分钟、五分钟、10 分钟等)。

第 2 步:根据轮询周期设置AlarmManager时间表以获取控制权,将控制权路由到BroadcastReceiver.

步骤#3:在onReceive()BroadcastReceiver,通过 获取上次广播的电池信息registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)),挑选出来EXTRA_TEMPERATURE,并根据您当前的算法进行处理。如果要在此处完成的工作将超过几毫秒,请考虑将该工作委托给一个IntentService,它可以在后台线程上完成工作。

这样,您不需要一直将进程保存在内存中,并且用户可以选择他们想要监控温度的积极程度——监测越积极,电池成本就越高(讽刺的是,更多监控将增加电池温度)。

于 2013-04-20T22:24:21.690 回答