首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在通过BatteryManager.Battery_Status_Full接收ACTION_BATTERY_CHANGED后了解BroadcastReceiver

在通过BatteryManager.Battery_Status_Full接收ACTION_BATTERY_CHANGED后了解BroadcastReceiver
EN

Stack Overflow用户
提问于 2012-03-09 10:35:33
回答 1查看 1.4K关注 0票数 1

我正在开发一个应用程序,当任何一个Battery_Status_Full发生时(电池100%充电)/充电断开时,我需要更新db中的时间,以先发生者为准。

我能够获得电池断开事件,并基于该事件更新db,但当设备仍在充电并达到100%充电时,当在服务- onCreate中,我注册了broadcastReceiver与IntentFilter(Intent.ACTION_BATTERY_CHANGED),并试图触发一个重复事件后,例如每5分钟,以检查100%电池充电是否完成,我似乎从来没有收到100%事件,因此,总是断开数据库更新发生,而不是100%充电更新。另外,使用我的AlarmManager,检查100%电池充电的服务只启动一次,而不是重复。

请指点。我的应用程序快完成了,但是这个小bug让我发疯了。谢谢Omkar Ghaisas

--更多的细节--我的应用架构如下

  1. BroadcastReceiver (注册为ACTION_POWER_CONNECTED和ACTION_POWERDISCONNECTED)。在每种情况下,它都启动一个单独的服务来处理DB事务。对于POwer connected,它使用名为ADD的额外信息设置意图,对于断开连接,它在服务启动时使用Update
  2. 来设置它,在onCreate中,它通过传入IntentFilter ACTION_BATTERY_CHANGED的空广播接收机和在onStartCommand中传递空广播接收机来注册接收方,如果要在onStartCommand中添加标志,则在db中保存一个新条目。如果是update标志--只有在之前的update db条目没有生成的情况下,我才会继续更新db
  3. --在上面的添加/更新逻辑( if - AlarmManager )下面有一个带有setRepeating的AlarmManager,它将启动另一项服务,希望在新服务中,当我不断检查批处理级别是否达到100%时,就会更新数据库本身。
  4. 如果电池从未达到100%,Battery_Dicsonnected被触发,那么在上面的更新块中,db无论如何都会被更新,无论当时的电量是多少。--

怀疑/关注-

  • 但是问题是,从告警管理器调用的新服务只启动/调用一次。
  • ,我把这个报警管理器放在哪里?
  • 是为不断检查电池电量达到100%需要而创建的第二个服务?

请给我导游。如果需要的话,我可以很好地发布代码。谢谢Omkar

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-11 12:06:53

我终于弄明白了。我对警报员的定位是错的。我修正了这一点,并删除了不必要的第二次服务,只是为了检查是否达到100%的电池水平。最后,一切都如期而至。-哇,我对我的第一个android应用程序的运行感到非常高兴。不过,还是谢谢你的帮助。奥姆卡尔

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9632613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档