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()); } } // 视图控件缓存状态