diff --git a/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/BatteryReportActivity.java b/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/BatteryReportActivity.java index 95a6fca..547f64d 100644 --- a/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/BatteryReportActivity.java +++ b/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/BatteryReportActivity.java @@ -34,29 +34,31 @@ import java.util.Map; /** * 电池报告页面,统计应用24小时运行时长与电池消耗情况 * 支持应用搜索、累计耗电计算、电池广播监听,适配 API30 - * @Author ZhanGSKen&豆包大模型 - * @Date 2025/10/22 13:21 + * @Author 豆包&ZhanGSKen */ public class BatteryReportActivity extends WinBoLLActivity implements IWinBoLLActivity { - // ======================== 静态常量 ========================= + // ======================== 静态常量(按功能分类) ========================= public static final String TAG = "BatteryReportActivity"; private static final long ONE_DAY_MS = 24 * 3600 * 1000; // 24小时毫秒数 private static final long ONE_MINUTE_MS = 60 * 1000; // 1分钟毫秒数 - // ======================== 成员变量 ========================= + // ======================== 成员变量(按依赖优先级+功能分类) ========================= // UI组件 private Toolbar mToolbar; private RecyclerView rvBatteryReport; private EditText etSearch; + // 数据与适配器 private BatteryReportAdapter adapter; private List dataList = new ArrayList(); private List filteredList = new ArrayList(); + // 电池相关 private BroadcastReceiver batteryReceiver; private int batteryCapacity = 5400; // 电池容量(mAh) private float lastBatteryPercent = 100.0f; private long lastCheckTime = System.currentTimeMillis(); + // 缓存相关 private Map appRunTimeCache = new HashMap(); private Map packageToAppNameCache = new HashMap(); @@ -73,7 +75,7 @@ public class BatteryReportActivity extends WinBoLLActivity implements IWinBoLLAc return TAG; } - // ======================== 生命周期方法 ========================= + // ======================== 生命周期方法(按执行顺序排列) ========================= @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -84,6 +86,7 @@ public class BatteryReportActivity extends WinBoLLActivity implements IWinBoLLAc initView(); // 初始化PackageManager mPackageManager = getPackageManager(); + LogUtils.d(TAG, "【onCreate】基础组件初始化完成"); // 权限检查(Java7 传统条件判断) if (!hasUsageStatsPermission(this)) { @@ -100,11 +103,12 @@ public class BatteryReportActivity extends WinBoLLActivity implements IWinBoLLAc updateAppRunTimeToModel(); calculateInitial24hTotalConsumption(); filteredList.addAll(dataList); + LogUtils.d(TAG, "【onCreate】数据初始化完成,原始数据量:" + dataList.size()); // 初始化适配器 adapter = new BatteryReportAdapter(this, filteredList, mPackageManager, packageToAppNameCache); rvBatteryReport.setAdapter(adapter); - LogUtils.d(TAG, "【onCreate】适配器初始化完成,数据量:" + filteredList.size()); + LogUtils.d(TAG, "【onCreate】适配器初始化完成,过滤后数据量:" + filteredList.size()); // 绑定搜索监听 bindSearchListener(); @@ -156,8 +160,9 @@ public class BatteryReportActivity extends WinBoLLActivity implements IWinBoLLAc @Override public void onTextChanged(CharSequence s, int start, int before, int count) { - LogUtils.d(TAG, "【bindSearchListener】搜索关键词变化:" + s.toString()); - filterAppsByPackageAndName(s.toString()); + String keyword = s.toString().trim(); + LogUtils.d(TAG, "【bindSearchListener】搜索关键词变化:" + keyword); + filterAppsByPackageAndName(keyword); } @Override @@ -263,6 +268,7 @@ public class BatteryReportActivity extends WinBoLLActivity implements IWinBoLLAc * @return 应用名称,获取失败返回包名 */ private String getAppNameByPackage(String packageName) { + LogUtils.v(TAG, "【getAppNameByPackage】查询包名:" + packageName); try { ApplicationInfo appInfo = mPackageManager.getApplicationInfo(packageName, 0); return mPackageManager.getApplicationLabel(appInfo).toString(); @@ -356,6 +362,7 @@ public class BatteryReportActivity extends WinBoLLActivity implements IWinBoLLAc * @param runTimeMap 应用运行时长映射 */ private void calculateSingleConsumptionAndAccumulate(float dropPercent, Map runTimeMap) { + LogUtils.d(TAG, "【calculateSingleConsumptionAndAccumulate】开始计算,电池下降百分比:" + dropPercent); long totalSingleRunTime = 0; // 1. 计算本次电池下降期间的总运行时长 for (Map.Entry entry : runTimeMap.entrySet()) { @@ -393,7 +400,7 @@ public class BatteryReportActivity extends WinBoLLActivity implements IWinBoLLAc }); // 4. 重新应用过滤并刷新列表 - filterAppsByPackageAndName(etSearch.getText().toString()); + filterAppsByPackageAndName(etSearch.getText().toString().trim()); LogUtils.d(TAG, "【calculateSingleConsumptionAndAccumulate】单次耗电计算与累加完成,列表已刷新"); } @@ -456,7 +463,6 @@ public class BatteryReportActivity extends WinBoLLActivity implements IWinBoLLAc * - consumption:单次耗电(两次电池广播间的消耗) * - totalConsumption:累计耗电(24小时初始化值+后续单次累加) * - runTime:运行时长(ms) - * - packageName:应用包名 */ public static class AppBatteryModel { private String packageName; // 应用包名(核心标识) @@ -519,6 +525,7 @@ public class BatteryReportActivity extends WinBoLLActivity implements IWinBoLLAc this.mDataList = dataList; this.mPm = pm; this.mPackageToNameCache = packageToNameCache; + LogUtils.d(TAG, "【BatteryReportAdapter】适配器构造完成,数据量:" + dataList.size()); } @Override