diff --git a/powerbell/build.properties b/powerbell/build.properties
index 3535da6..a689707 100644
--- a/powerbell/build.properties
+++ b/powerbell/build.properties
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
-#Mon Dec 22 13:00:54 HKT 2025
+#Mon Dec 22 15:02:15 GMT 2025
stageCount=24
libraryProject=
baseVersion=15.14
publishVersion=15.14.23
-buildCount=0
+buildCount=2
baseBetaVersion=15.14.24
diff --git a/powerbell/src/main/AndroidManifest.xml b/powerbell/src/main/AndroidManifest.xml
index 76160eb..c7d9479 100644
--- a/powerbell/src/main/AndroidManifest.xml
+++ b/powerbell/src/main/AndroidManifest.xml
@@ -4,74 +4,49 @@
xmlns:tools="http://schemas.android.com/tools"
package="cc.winboll.studio.powerbell">
-
+
-
-
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
-
-
-
-
+ android:launchMode="singleTask"/>
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -269,27 +169,69 @@
android:name=".activities.SettingsActivity"
android:exported="false"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
-
\ No newline at end of file
+
+
diff --git a/powerbell/src/main/java/cc/winboll/studio/powerbell/App.java b/powerbell/src/main/java/cc/winboll/studio/powerbell/App.java
index ca413d3..97ca721 100644
--- a/powerbell/src/main/java/cc/winboll/studio/powerbell/App.java
+++ b/powerbell/src/main/java/cc/winboll/studio/powerbell/App.java
@@ -1,6 +1,7 @@
package cc.winboll.studio.powerbell;
import android.content.Context;
+import android.os.Build;
import android.os.Environment;
import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
import cc.winboll.studio.libappbase.GlobalApplication;
@@ -19,7 +20,7 @@ import java.io.File;
* 核心策略:极致强制缓存 - 无论内存紧张程度,永不自动清理任何缓存(Bitmap/视图控件/路径记录)
*/
public class App extends GlobalApplication {
- // ===================== 常量定义区 =====================
+ // ===================== 常量定义区(按功能分类排序) =====================
public static final String TAG = "App";
// 组件跳转常量
@@ -35,36 +36,30 @@ public class App extends GlobalApplication {
// 缓存防护常量
private static final String CACHE_PROTECT_TAG = "FORCE_CACHE_PROTECT";
- // ===================== 静态属性区 =====================
+ // ===================== 静态属性区(按工具类优先级排序) =====================
// 数据配置工具
private static AppConfigUtils sAppConfigUtils;
private static AppCacheUtils sAppCacheUtils;
+
// 全局Bitmap缓存工具(极致强制保持:一旦初始化,永不销毁)
public static BitmapCacheUtils sBitmapCacheUtils;
+
// 全局视图控件缓存工具(极致强制保持:一旦初始化,永不销毁)
public static MemoryCachedBackgroundView sMemoryCachedBackgroundView;
- // 临时文件夹路径
- private static String sTempDirPath = "";
- // ===================== 成员属性区 =====================
+ // ===================== 成员属性区(按生命周期关联度排序) =====================
// 全局广播接收器
private GlobalApplicationReceiver mGlobalReceiver;
+
// 通知管理工具
private NotificationManagerUtils mNotificationManager;
- // ===================== 公共方法区 =====================
- /**
- * 获取临时文件夹路径
- */
- public static String getTempDirPath() {
- return sTempDirPath;
- }
-
+ // ===================== 公共静态方法区(工具类实例获取) =====================
/**
* 获取应用配置工具实例
*/
public static AppConfigUtils getAppConfigUtils(Context context) {
- LogUtils.d(TAG, "getAppConfigUtils() 调用,传入Context:" + context.getClass().getSimpleName());
+ LogUtils.d(TAG, "getAppConfigUtils() 调用,传入Context类型:" + (context != null ? context.getClass().getSimpleName() : "null"));
if (sAppConfigUtils == null) {
sAppConfigUtils = AppConfigUtils.getInstance(context);
LogUtils.d(TAG, "getAppConfigUtils():AppConfigUtils实例已初始化");
@@ -76,7 +71,7 @@ public class App extends GlobalApplication {
* 获取应用缓存工具实例
*/
public static AppCacheUtils getAppCacheUtils(Context context) {
- LogUtils.d(TAG, "getAppCacheUtils() 调用,传入Context:" + context.getClass().getSimpleName());
+ LogUtils.d(TAG, "getAppCacheUtils() 调用,传入Context类型:" + (context != null ? context.getClass().getSimpleName() : "null"));
if (sAppCacheUtils == null) {
sAppCacheUtils = AppCacheUtils.getInstance(context);
LogUtils.d(TAG, "getAppCacheUtils():AppCacheUtils实例已初始化");
@@ -84,12 +79,18 @@ public class App extends GlobalApplication {
return sAppCacheUtils;
}
+ // ===================== 公共成员方法区(业务功能) =====================
/**
* 清除电池历史数据
*/
public void clearBatteryHistory() {
LogUtils.d(TAG, "clearBatteryHistory() 调用");
- sAppCacheUtils.clearBatteryHistory();
+ if (sAppCacheUtils != null) {
+ sAppCacheUtils.clearBatteryHistory();
+ LogUtils.d(TAG, "clearBatteryHistory():电池历史数据已清除");
+ } else {
+ LogUtils.w(TAG, "clearBatteryHistory():AppCacheUtils未初始化,清除失败");
+ }
}
/**
@@ -111,7 +112,7 @@ public class App extends GlobalApplication {
LogUtils.w(TAG, CACHE_PROTECT_TAG + " 手动清理缓存完成(部分缓存实例仍可能保留在内存中)");
}
- // ===================== 生命周期方法区 =====================
+ // ===================== 生命周期方法区(按执行顺序排序) =====================
@Override
public void onCreate() {
super.onCreate();
@@ -123,8 +124,6 @@ public class App extends GlobalApplication {
// 初始化基础工具
initBaseTools();
- // 初始化临时文件夹
- initTempDir();
// 初始化工具类实例(核心:极致强制缓存,永不销毁)
initUtils();
// 初始化广播接收器
@@ -140,6 +139,7 @@ public class App extends GlobalApplication {
// 释放Toast工具
ToastUtils.release();
+ LogUtils.d(TAG, "onTerminate():Toast工具已释放");
// 释放通知工具
releaseNotificationManager();
// 释放广播接收器
@@ -169,7 +169,7 @@ public class App extends GlobalApplication {
logDetailedCacheStatus();
}
- // ===================== 私有初始化方法区 =====================
+ // ===================== 私有初始化方法区(按初始化顺序排序) =====================
/**
* 初始化基础工具(Activity管理、Toast)
*/
@@ -180,21 +180,6 @@ public class App extends GlobalApplication {
LogUtils.d(TAG, "initBaseTools() 基础工具初始化完成");
}
- /**
- * 初始化临时文件夹(适配API 30外部存储访问)
- */
- private void initTempDir() {
- LogUtils.d(TAG, "initTempDir() 开始初始化临时文件夹");
- File picturesDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
- File powerBellDir = new File(picturesDir, "PowerBell");
- if (!powerBellDir.exists()) {
- boolean isMkSuccess = powerBellDir.mkdirs();
- LogUtils.d(TAG, "initTempDir() 文件夹创建结果:" + isMkSuccess);
- }
- sTempDirPath = powerBellDir.getAbsolutePath();
- LogUtils.d(TAG, "initTempDir() 临时文件夹路径:" + sTempDirPath);
- }
-
/**
* 初始化工具类实例(核心:极致强制缓存,一旦初始化永不销毁)
*/
@@ -225,7 +210,7 @@ public class App extends GlobalApplication {
LogUtils.d(TAG, "initReceiver() 广播接收器注册完成");
}
- // ===================== 私有工具方法区 =====================
+ // ===================== 私有释放方法区(按资源重要性排序) =====================
/**
* 释放广播接收器资源
*/
@@ -254,6 +239,7 @@ public class App extends GlobalApplication {
}
}
+ // ===================== 私有工具方法区(辅助功能) =====================
/**
* 记录详细缓存状态(用于调试,监控极致强制缓存效果)
*/
@@ -267,7 +253,7 @@ public class App extends GlobalApplication {
int cacheCount = sBitmapCacheUtils.getCacheCount();
LogUtils.d(TAG, CACHE_PROTECT_TAG + " Bitmap缓存数量:" + cacheCount);
} catch (Exception e) {
- LogUtils.d(TAG, CACHE_PROTECT_TAG + " Bitmap缓存数量获取失败(不影响缓存)");
+ LogUtils.d(TAG, CACHE_PROTECT_TAG + " Bitmap缓存数量获取失败(不影响缓存),异常信息:" + e.getMessage());
}
}
// 视图控件缓存状态