gpt4 book ai didi

java - BroadcastReceiver 只监听变化吗?

转载 作者:行者123 更新时间:2023-12-02 07:41:01 31 4
gpt4 key购买 nike

我正在阅读指南 here关于设置 BroadcastReceiver 来检查电池变化。它指出我可以像这样设置一个 BroadcastReceiver:

<receiver android:name=".PowerConnectionReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
</intent-filter>
</receiver>

在我的 list 中,并将其作为一个类:

public class PowerConnectionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;

int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BATTERY_PLUGGED_AC;
}
}

BroadcastReceiver 是否仅在电池状态发生更改时调用 onReceive(...) ?例如,如果用户将设备插入计算机,并且在 BroadcastReceiver 运行期间一直在充电,该怎么办?由于从技术上讲,设备的电池状态没有改变,它会检测到变化吗?每当我得到 isCharging 时,它是当前值还是上次更改时的值?我想检查它是否确实发生了变化以及它始终是什么,以便我可以优化我的应用程序并节省电池生命周期。

最佳答案

它只会在您指定的这些操作上被调用...

  1. android.intent.action.ACTION_POWER_CONNECTED
  2. android.intent.action.ACTION_POWER_DISCONNECTED

就在那时...

1) 设备已连接外部电源。

2) 设备的外部电源已被移除。

如果您需要跟踪电池电量变化,则应在 list 中包含此过滤器。

android.intent.action.ACTION_BATTERY_CHANGED

顺便说一句。当然,isCharging 是当前状态。

关于java - BroadcastReceiver 只监听变化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11601375/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com