【问题标题】:Android battery widget initializedAndroid 电池小部件已初始化
【发布时间】:2011-10-21 14:53:01
【问题描述】:

我创建了一个电池小部件,它使用服务来监听电池变化。 但是正因为如此,创建时,小部件必须等待电池状态发生变化,然后才能显示数据。

我的问题是是否有简单的方法可以一次性检查电池。

我可能找错了树,但我尝试在 AppWidgetProvider 类中使用 BroadcastReceiver 来获取电池的初始状态,但不知道如何停止它以便服务可以从那里获取它。

有什么想法吗?

干杯

【问题讨论】:

    标签: android service widget battery


    【解决方案1】:

    我创建了一个电池小部件,它使用服务来监听电池变化。

    请注意,始终保持服务通常不是一个好主意。用户不喜欢它,他们会用任务杀手或“设置”中的“管理服务”屏幕将其关闭。 Android 也不喜欢它,最终会停止它。

    由于电池电量变化不是很频繁,请考虑切换到您使用AlarmManager 的型号,并每隔几分钟检查一次电池电量。

    但是,正因为如此,在创建小部件时,必须等待电池状态发生变化,然后才能显示数据。

    没有。当您注册ACTION_BATTERY_CHANGED 时,您的BroadcastReceiver 会立即使用该操作的最后发送广播调用,因为ACTION_BATTERY_CHANGED 是一个粘性广播。

    您可以在this sample project 中看到这一点。电池信息会立即显示在 Activity 中——这是因为onReceive() 方法会立即被调用。

    我的问题是是否有简单的方法可以一次性检查电池。

    这也是可能的。为ACTION_BATTERY_CHANGED 致电registerReceiver(),但使用null BroadcastReceiver。您将收到该操作的最后发送的广播Intent。例如,这将是从AlarmManager 事件处理它的方法。

    【讨论】:

    • 是的,当我第一次创建它时,我对使用永久服务保持沉默,但是当我看到许多最成功的电池小部件也使用永久服务时,我的恐惧得到了缓解。在什么情况下系统会杀死它?我想象当资源变得有限时。我已经运行这个小部件大约一个星期了,它并没有失去与电池的同步。谢谢,我会考虑使用 AlarmManager
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    相关资源
    最近更新 更多