我正在开发一个应用程序,其中,当Battery_Status_Full发生时(电池充电100%)/充电断开时,我需要更新db中的时间,以先发生者为准。
我能够获得电池断开事件并根据该事件更新数据库,但是当设备仍在充电并且达到100%充电时,当在服务内部时 - onCreate我已经使用IntentFilter注册了broadcastReceiver(意图。 ACTION_BATTERY_CHANGED)并尝试在每5分钟说一次重复事件后检查100%电池充电是否完成,我似乎从未收到100%事件,因此始终发生断开连接数据更新,而不是100%充电更新。 另外,使用我的AlarmManager,检查100%电池充电的服务只会被触发一次而不是重复。
请指导。我几乎完成了我的应用程序,但这个小错误让我发疯。 谢谢 Omkar Ghaisas
----更多细节---- 我的应用程序架构如下,
BroadcastReceiver(已注册为ACTION_POWER_CONNECTED和ACTION_POWERDISCONNECTED)。在每种情况下,它都会启动一个单独的服务来处理数据库事务。对于已连接的POwer,它将Intent设置为名为ADD的额外信息,对于已断开连接,它将使用Update
当服务启动时,在其onCreate中,它通过为IntentFilter传递null broadcastreceiver ACTION_BATTERY_CHANGED来注册接收者 在onStartCommand中,对于intent中的Add标记,新的条目保存在db中。 在更新标志的情况下 - 仅当没有进行更新的db更新时,我继续更新数据库
我在上面的添加/更新逻辑(If-Else)下面有一个带有setRepeating的AlarmManager,它通过getService(serviceclass.class)启动另一个服务
我期待在新服务中,当我继续检查battry级别是否达到100%时,我自己更新数据库。
如果电池永远不会达到100%并且触发了Battery_Dicsonnected,那么在上面的更新模块中,数据库无论如何都会更新,无论当时的电池电量是多少。
怀疑/担忧 -
请指导。如果需要,我可以很好地发布代码。 谢谢 OMKAR
答案 0 :(得分:-1)
我终于明白了。我对闹钟管理员的定位是错误的。我修复了这个问题并删除了不必要的第二项服务,以检查是否达到了100%的电池电量。最后,每个人都按预期工作。 :-)哇我觉得我的第一个Android应用程序按预期工作非常过分。 谢谢你的帮助。 OMKAR