函数简化重构。

This commit is contained in:
2025-12-20 03:07:08 +08:00
parent 76c1dee625
commit 9c1e9dc75b
5 changed files with 28 additions and 170 deletions

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Fri Dec 19 12:56:06 GMT 2025 #Fri Dec 19 19:04:54 GMT 2025
stageCount=10 stageCount=10
libraryProject= libraryProject=
baseVersion=15.14 baseVersion=15.14
publishVersion=15.14.9 publishVersion=15.14.9
buildCount=47 buildCount=49
baseBetaVersion=15.14.10 baseBetaVersion=15.14.10

View File

@@ -486,11 +486,10 @@ public class MainActivity extends WinBoLLActivity implements MainContentView.OnV
} }
// ======================== 消息发送方法 ======================== // ======================== 消息发送方法 ========================
private void notifyServiceAppConfigChange(AppConfigBean configBean) { private void notifyServiceAppConfigChange() {
LogUtils.d(TAG, "notifyServiceAppConfigChange: 通知服务配置变更"); LogUtils.d(TAG, "notifyServiceAppConfigChange: 通知服务配置变更");
// 预留配置变更通知逻辑 ControlCenterService.updateStatus(this);
ToastUtils.show("notifyServiceAppConfigChange"); reloadAppConfig();
ControlCenterService.updateStatus(this, configBean);
} }
// ======================== 静态工具方法 ======================== // ======================== 静态工具方法 ========================
@@ -510,32 +509,6 @@ public class MainActivity extends WinBoLLActivity implements MainContentView.OnV
} }
} }
// ======================== 辅助工具方法 ========================
// private String getRealPathFromUri(Uri contentUri) {
// LogUtils.d(TAG, "getRealPathFromUri: 解析Uri路径Uri=" + contentUri);
// if (contentUri == null) {
// LogUtils.e(TAG, "getRealPathFromUri: Uri为空解析失败");
// return null;
// }
// String realPath = null;
// String[] projection = {MediaStore.MediaColumns.DATA};
// Cursor cursor = getContentResolver().query(contentUri, projection, null, null, null);
// if (cursor != null) {
// try {
// if (cursor.moveToNext()) {
// int columnIndex = cursor.getColumnIndex(MediaStore.MediaColumns.DATA);
// if (columnIndex > -1) {
// realPath = cursor.getString(columnIndex);
// }
// }
// } finally {
// cursor.close();
// }
// }
// LogUtils.d(TAG, "getRealPathFromUri: 解析完成,路径=" + realPath);
// return realPath;
// }
private APPInfo genDefaultAppInfo() { private APPInfo genDefaultAppInfo() {
LogUtils.d(TAG, "genDefaultAppInfo: 生成默认应用信息"); LogUtils.d(TAG, "genDefaultAppInfo: 生成默认应用信息");
String branchName = "powerbell"; String branchName = "powerbell";

View File

@@ -105,14 +105,7 @@ public class ControlCenterServiceReceiver extends BroadcastReceiver {
} }
// 3. 加载最新配置(三级兜底:本地配置→服务内存配置→默认配置) // 3. 加载最新配置(三级兜底:本地配置→服务内存配置→默认配置)
AppConfigBean latestConfig = loadLatestConfig(service); AppConfigBean latestConfig = AppConfigUtils.getInstance(service).loadAppConfig();
if (latestConfig == null) {
latestConfig = service.getCurrentConfigBean();
if (latestConfig == null) {
latestConfig = new AppConfigBean();
LogUtils.w(TAG, "handleBatteryStateChanged: 配置为空,使用默认配置");
}
}
// 4. 同步电池状态到配置,通知服务更新线程 // 4. 同步电池状态到配置,通知服务更新线程
latestConfig.setCurrentBatteryValue(currentBatteryLevel); latestConfig.setCurrentBatteryValue(currentBatteryLevel);
@@ -137,15 +130,8 @@ public class ControlCenterServiceReceiver extends BroadcastReceiver {
LogUtils.d(TAG, "handleNotifyAppConfigUpdate: 同步缓存状态到配置 | service=" + service); LogUtils.d(TAG, "handleNotifyAppConfigUpdate: 同步缓存状态到配置 | service=" + service);
try { try {
// 加载最新配置(三级兜底) // 加载最新配置(三级兜底)
AppConfigBean latestConfig = loadLatestConfig(service); AppConfigBean latestConfig = AppConfigUtils.getInstance(service).loadAppConfig();
if (latestConfig == null) {
latestConfig = service.getCurrentConfigBean();
if (latestConfig == null) {
latestConfig = new AppConfigBean();
LogUtils.w(TAG, "handleNotifyAppConfigUpdate: 配置为空,使用默认配置");
}
}
// 同步缓存的电池状态到配置 // 同步缓存的电池状态到配置
latestConfig.setCurrentBatteryValue(sLastBatteryLevel); latestConfig.setCurrentBatteryValue(sLastBatteryLevel);
latestConfig.setIsCharging(sIsCharging); latestConfig.setIsCharging(sIsCharging);
@@ -180,34 +166,6 @@ public class ControlCenterServiceReceiver extends BroadcastReceiver {
} }
} }
// ================================== 内部辅助方法(通用逻辑拆分,统一管理)=================================
/**
* 加载最新应用配置
* @param context 上下文
* @return 最新配置实例失败返回null
*/
private AppConfigBean loadLatestConfig(Context context) {
LogUtils.d(TAG, "loadLatestConfig: 读取本地配置 | context=" + context);
try {
if (context == null) {
LogUtils.e(TAG, "loadLatestConfig: 上下文为空");
return null;
}
AppConfigUtils configUtils = AppConfigUtils.getInstance(context);
if (configUtils == null) {
LogUtils.e(TAG, "loadLatestConfig: 配置工具类实例为空");
return null;
}
configUtils.reloadAllConfig();
LogUtils.d(TAG, "loadLatestConfig: 本地配置加载成功");
return configUtils.mAppConfigBean;
} catch (Exception e) {
LogUtils.e(TAG, "loadLatestConfig: 加载失败", e);
return null;
}
}
// ================================== 广播注册/注销(强化容错,避免重复操作)================================= // ================================== 广播注册/注销(强化容错,避免重复操作)=================================
/** /**

View File

@@ -318,16 +318,15 @@ public class ControlCenterService extends Service {
* @param context 上下文 * @param context 上下文
* @param configBean 新配置 * @param configBean 新配置
*/ */
public static void updateStatus(Context context, AppConfigBean configBean) { public static void updateStatus(Context context) {
LogUtils.d(TAG, "updateStatus: 外部更新配置 | context=" + context + " | config=" + configBean); LogUtils.d(TAG, "updateStatus: 外部更新配置 | context=" + context);
if (context == null || configBean == null) { if (context == null) {
LogUtils.e(TAG, "updateStatus: 参数为空,更新失败"); LogUtils.e(TAG, "updateStatus: 参数为空,更新失败");
return; return;
} }
Intent intent = new Intent(context, ControlCenterService.class); Intent intent = new Intent(context, ControlCenterService.class);
intent.setAction(ControlCenterServiceReceiver.ACTION_APPCONFIG_CHANGED); intent.setAction(ControlCenterServiceReceiver.ACTION_APPCONFIG_CHANGED);
intent.putExtra(ControlCenterServiceReceiver.EXTRA_APP_CONFIG_BEAN, (Serializable) configBean);
intent.setPackage(context.getPackageName()); intent.setPackage(context.getPackageName());
context.sendBroadcast(intent); context.sendBroadcast(intent);
} }

View File

@@ -33,7 +33,6 @@ public class AppConfigUtils {
// ======================== 配置Bean属性持久化核心volatile保障线程安全======================== // ======================== 配置Bean属性持久化核心volatile保障线程安全========================
public volatile AppConfigBean mAppConfigBean; // 应用配置Bean public volatile AppConfigBean mAppConfigBean; // 应用配置Bean
private volatile ControlCenterServiceBean mServiceConfigBean; // 服务配置Bean
// ======================== 缓存状态属性减少Bean读取次数提升性能======================== // ======================== 缓存状态属性减少Bean读取次数提升性能========================
private volatile boolean mIsServiceEnabled = false; // 服务开关缓存状态 private volatile boolean mIsServiceEnabled = false; // 服务开关缓存状态
@@ -46,9 +45,8 @@ public class AppConfigUtils {
this.mApplication = (App) context.getApplicationContext(); this.mApplication = (App) context.getApplicationContext();
// 初始化配置Bean // 初始化配置Bean
mAppConfigBean = new AppConfigBean(); mAppConfigBean = new AppConfigBean();
mServiceConfigBean = new ControlCenterServiceBean(false);
// 加载持久化配置 // 加载持久化配置
loadAllConfig(); loadAppConfig();
LogUtils.d(TAG, "配置工具类初始化完成"); LogUtils.d(TAG, "配置工具类初始化完成");
} }
@@ -74,7 +72,7 @@ public class AppConfigUtils {
/** /**
* 加载所有配置(应用配置+服务配置,统一入口,初始化/重载通用) * 加载所有配置(应用配置+服务配置,统一入口,初始化/重载通用)
*/ */
private void loadAllConfig() { public AppConfigBean loadAppConfig() {
LogUtils.d(TAG, "loadAllConfig: 开始加载所有配置"); LogUtils.d(TAG, "loadAllConfig: 开始加载所有配置");
// 加载应用配置 // 加载应用配置
AppConfigBean savedAppBean = (AppConfigBean) AppConfigBean.loadBean(mContext, AppConfigBean.class); AppConfigBean savedAppBean = (AppConfigBean) AppConfigBean.loadBean(mContext, AppConfigBean.class);
@@ -82,21 +80,11 @@ public class AppConfigUtils {
mAppConfigBean = savedAppBean; mAppConfigBean = savedAppBean;
LogUtils.d(TAG, "loadAllConfig: 应用配置加载成功"); LogUtils.d(TAG, "loadAllConfig: 应用配置加载成功");
} else { } else {
mAppConfigBean = new AppConfigBean();
AppConfigBean.saveBean(mContext, mAppConfigBean); AppConfigBean.saveBean(mContext, mAppConfigBean);
LogUtils.d(TAG, "loadAllConfig: 无已保存应用配置,使用默认值并持久化"); LogUtils.d(TAG, "loadAllConfig: 无已保存应用配置,使用默认值并持久化");
} }
return mAppConfigBean;
// 加载服务配置
ControlCenterServiceBean savedServiceBean = (ControlCenterServiceBean) ControlCenterServiceBean.loadBean(mContext, ControlCenterServiceBean.class);
if (savedServiceBean != null) {
mServiceConfigBean = savedServiceBean;
mIsServiceEnabled = savedServiceBean.isEnableService();
LogUtils.d(TAG, "loadAllConfig: 服务配置加载成功,服务状态:" + (mIsServiceEnabled ? "开启" : "关闭"));
} else {
ControlCenterServiceBean.saveBean(mContext, mServiceConfigBean);
mIsServiceEnabled = false;
LogUtils.d(TAG, "loadAllConfig: 无已保存服务配置,使用默认值并持久化");
}
} }
/** /**
@@ -104,54 +92,9 @@ public class AppConfigUtils {
*/ */
private void saveAppConfig() { private void saveAppConfig() {
AppConfigBean.saveBean(mContext, mAppConfigBean); AppConfigBean.saveBean(mContext, mAppConfigBean);
// 通知服务和Activity更新配置适配API30服务通信规范
ControlCenterService.updateStatus(mContext, mAppConfigBean);
MainActivity.reloadAppConfig();
LogUtils.d(TAG, "saveAppConfig: 应用配置保存成功已同步服务和Activity"); LogUtils.d(TAG, "saveAppConfig: 应用配置保存成功已同步服务和Activity");
} }
/**
* 保存服务配置(内部核心方法,直接持久化)
*/
private void saveServiceConfig() {
mServiceConfigBean.setIsEnableService(mIsServiceEnabled);
ControlCenterServiceBean.saveBean(mContext, mServiceConfigBean);
LogUtils.d(TAG, "saveServiceConfig: 服务配置保存成功,服务状态:" + (mIsServiceEnabled ? "开启" : "关闭"));
}
// ======================== 服务开关配置方法(单独归类,逻辑聚焦)========================
/**
* 设置服务开关状态直接生效无弹窗适配API30后台服务启停规范
* @param isEnabled 目标状态true=开启false=关闭)
*/
public void setServiceEnabled(final boolean isEnabled) {
if (isEnabled == mIsServiceEnabled) {
LogUtils.d(TAG, "setServiceEnabled: 服务状态无变化,无需操作");
return;
}
mIsServiceEnabled = isEnabled;
saveServiceConfig();
// 启停服务适配API30后台服务限制
if (mIsServiceEnabled) {
LogUtils.d(TAG, "setServiceEnabled: 启动ControlCenterService");
ControlCenterService.startControlCenterService(mContext);
} else {
LogUtils.d(TAG, "setServiceEnabled: 停止ControlCenterService");
ControlCenterService.stopControlCenterService(mContext);
}
}
/**
* 获取服务开关状态(直接返回缓存值,提升性能)
* @return 服务状态true=开启false=关闭)
*/
public boolean isServiceEnabled() {
LogUtils.d(TAG, "isServiceEnabled: 获取服务状态=" + (mIsServiceEnabled ? "开启" : "关闭"));
return mIsServiceEnabled;
}
// ======================== 充电提醒配置方法(单独归类,逻辑聚焦)======================== // ======================== 充电提醒配置方法(单独归类,逻辑聚焦)========================
/** /**
* 设置充电提醒开关状态(直接生效,无弹窗) * 设置充电提醒开关状态(直接生效,无弹窗)
@@ -354,34 +297,19 @@ public class AppConfigUtils {
return interval; return interval;
} }
public boolean isServiceEnabled() {
// 加载服务配置
ControlCenterServiceBean savedServiceBean = (ControlCenterServiceBean) ControlCenterServiceBean.loadBean(mContext, ControlCenterServiceBean.class);
if (savedServiceBean != null) {
return savedServiceBean.isEnableService();
} else {
ControlCenterServiceBean.saveBean(mContext, new ControlCenterServiceBean(false));
return false;
}
}
// ======================== 外部配置操作入口(直接生效,无弹窗)======================== public void setIsServiceEnabled(boolean isServiceEnabled) {
/** ControlCenterServiceBean.saveBean(mContext, new ControlCenterServiceBean(isServiceEnabled));
* 保存所有配置(直接生效,无弹窗,主动保存入口) }
*/
public void saveAllConfig() {
saveAppConfig();
saveServiceConfig();
LogUtils.d(TAG, "saveAllConfig: 所有配置保存完成");
}
/**
* 重新加载所有配置(外部调用,适配手动修改配置场景)
*/
public void reloadAllConfig() {
LogUtils.d(TAG, "reloadAllConfig: 开始重新加载所有配置");
loadAllConfig();
MainActivity.reloadAppConfig();
LogUtils.d(TAG, "reloadAllConfig: 配置重新加载完成");
}
// ======================== 适配辅助类(补全服务更新方法,避免编译报错)========================
/**
* 辅助类补全ControlCenterService的updateStatus静态方法适配实际项目可移至Service类
*/
public static class ControlCenterServiceHelper {
// 空实现仅用于编译通过实际逻辑需在ControlCenterService中实现
}
} }