Battery Reset的4大原因

Battery Stats Reset的4大原因:

一、读电池文件异常执行reset[BatteryStatsImpl.RESET_REASON_CORRUPT_FILE]

  1. 超过200个持锁;

  2. 超过200个syn或job;

  3. 超过1000个sensor;

  4. 超过1000个processes;

  5. 超过1000个应用;

  6. 超过1000个alarm

  7. 超过10000个service

二、命令行执行reset[BatteryStatsImpl.RESET_REASON_ADB_COMMAND]

adb dumpsys batterystats --reset

三、充电执行reset[BatteryStatsImpl.RESET_REASON_FULL_CHARGE]

  1. 充满电状态

  2. 电量百分比90%以上,

  3. 电量百分比从20%以下到80%以上

  4. 充电期间累计总充电量百分比>200%

四、开机检测到power buckets改变执行reset[BatteryStatsImpl.RESET_REASON_MEASURED_ENERGY_BUCKETS_CHANGE]

每次开机检测当前机型所支持的POWER_BUCKET_的类别和数量是否发生改变,若和上次开机不同,则表示可能存在兼容性差异(MeasuredEnergyStatsConfig.isCompatible(config)),需要reset 可能场景举例:换电池或刷其他power_profile的版本

--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

@IntDef(prefix = {"POWER_BUCKET_"}, value = {
            POWER_BUCKET_UNKNOWN,
            POWER_BUCKET_SCREEN_ON,
            POWER_BUCKET_SCREEN_DOZE,
            POWER_BUCKET_SCREEN_OTHER,
            POWER_BUCKET_CPU,
            POWER_BUCKET_WIFI,
            POWER_BUCKET_BLUETOOTH,
            POWER_BUCKET_GNSS,
            POWER_BUCKET_MOBILE_RADIO,
    })


    private static final int[] SUPPORTED_PER_PROCESS_STATE_STANDARD_ENERGY_BUCKETS = {
            MeasuredEnergyStats.POWER_BUCKET_CPU, // CPU 电量消耗桶
            MeasuredEnergyStats.POWER_BUCKET_MOBILE_RADIO,// Modem 电量消耗桶
            MeasuredEnergyStats.POWER_BUCKET_WIFI,// WIFI 电量消耗桶
            MeasuredEnergyStats.POWER_BUCKET_BLUETOOTH,// 蓝牙 电量消耗桶
    };

本次开机检测到与上一次开机CPU、Modem、WIFI、蓝牙的电量消耗桶发生变化了,之前的数据可能不可靠,需要进行重置

--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

200      public static final int RESET_REASON_CORRUPT_FILE = 1;
201      public static final int RESET_REASON_ADB_COMMAND = 2;
202      public static final int RESET_REASON_FULL_CHARGE = 3;
203      public static final int RESET_REASON_MEASURED_ENERGY_BUCKETS_CHANGE = 4;


15536              if (!mNoAutoReset && mSystemReady
15537                      && (oldStatus == BatteryManager.BATTERY_STATUS_FULL
15538                      || level >= 90
15539                      || (mDischargeCurrentLevel < 20 && level >= 80)
15540                      || getHighDischargeAmountSinceCharge() >= 200)) {
15541                  Slog.i(TAG, "Resetting battery stats: level=" + level + " status=" + oldStatus
15542                          + " dischargeLevel=" + mDischargeCurrentLevel
15543                          + " lowAmount=" + getLowDischargeAmountSinceCharge()
15544                          + " highAmount=" + getHighDischargeAmountSinceCharge());


267      private static final int[] SUPPORTED_PER_PROCESS_STATE_STANDARD_ENERGY_BUCKETS = {
268              MeasuredEnergyStats.POWER_BUCKET_CPU,
269              MeasuredEnergyStats.POWER_BUCKET_MOBILE_RADIO,
270              MeasuredEnergyStats.POWER_BUCKET_WIFI,
271              MeasuredEnergyStats.POWER_BUCKET_BLUETOOTH,
272      };

109          /**
110           * Returns true if the supplied Config is compatible with this one and therefore
111           * data collected with one of them will work with the other.
112           */
113          public boolean isCompatible(Config other) {
114              return Arrays.equals(mSupportedStandardBuckets, other.mSupportedStandardBuckets)
115                      && Arrays.equals(mCustomBucketNames, other.mCustomBucketNames)
116                      && Arrays.equals(mSupportedMultiStateBuckets,
117                      other.mSupportedMultiStateBuckets)
118                      && Arrays.equals(mStateNames, other.mStateNames);
119          }

logcat|grep -Ei "isCompatible|initEnergyConsumerStatsLocked"

### 电脑开机按钮无反应的可能原因及解决方法 #### 可能原因分析 当按下电脑开机按钮却没有任何响应时,通常涉及以下几个方面的问题: 1. **电源供应问题** 如果主机无法启动,首先要确认的是电源是否正常工作。检查电源插座是否有电、电源线是否连接稳固以及电源开关是否开启。如果这些都没有问题,可以尝试更换电源适配器测试是否存在电源模块故障[^1]。 2. **硬件连接异常** 主机内部可能存在某些部件未正确安装或松脱的情况。例如,内存条、显卡或其他扩展设备可能出现接触不良的现象。此时应打开机箱并仔细检查各组件是否已牢固插入其对应的插槽中[^5]。 3. **主板电路短路或者损坏** 开机按键信号传递至主板上的南桥芯片来完成整个加电过程;一旦此部分受损则会导致即使按下了启动键也毫无动静的结果发生。对于此类深层次的技术难题建议交由专业人士处理以免造成更范围内的损害风险增加修复成本上升等问题出现[]. 4. **BIOS设置错误/CMOS电池耗尽** 有时由于误操作更改了 BIOS 设置也可能引起类似的症状表现形式各异但本质相同即系统失去了最基本的初始化指令从而表现为完全静默状态直到恢复默认配置为止另外还要注意 CMOS 所需维持低功耗运作时间久了之后也会因为电量不足而导致类似现象的发生因此定期维护保养显得尤为重要[^3]. 5. **其他外围因素干扰** 除了上述提到的主要几个方向之外还有一些外部环境影响比如静电积累过多亦或是散热风扇停止运转致使温度过高保护机制强制切断供电等情况都可能会引发这样的状况所以全面细致地排查每一个环节是非常必要的步骤之一[^2]. --- #### 解决方案指导 针对以上列举出来的各种可能性下面给出相应的解决方案供参考使用: - 对于怀疑是电源引起的故障可以通过替换新的经过认证合格的产品来进行验证; - 若发现存在线路虚接现象只需重新整理好各个端口确保它们紧密贴合即可消除隐患; - 遇到疑似主板损伤情形最好送修给专门机构做进一步深入诊断而不是自行拆解冒险修理; - 当遇到因 BIOS 调整失误所造成的麻烦可试着清除 CMOS 数据再重置回出厂设定看看效果如何; - 最后别忘了清理灰尘保持良好的通风条件预防过热事件再次上演同时也要防止雷击浪涌波冲击带来的意外伤害等等措施共同作用才能有效延长机器使用寿命减少不必要的经济损失.[^4] --- ```python def check_computer_issue(): """ A function to simulate basic checks for a computer that does not respond on power button press. This is an illustrative example and should be adapted based on actual troubleshooting steps. """ issues = [ {"name": "Power Supply", "solution": "Check the power cord, outlet, and replace PSU if necessary."}, {"name": "Hardware Connections", "action": "Inspect internal connections like RAM, GPU, etc."}, {"name": "Motherboard Issue", "repair": "Consult professional repair services."}, {"name": "BIOS/Clear CMOS", "reset": "Clear CMOS by removing battery or jumper reset."}, {"name": "External Factors", "preventive": "Ensure proper ventilation and grounding."} ] for issue in issues: print(f"Checking {issue['name']}...") check_computer_issue() ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

法迪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值