diff --git a/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/SettingsActivity.java b/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/SettingsActivity.java index 6748709..08aec3c 100644 --- a/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/SettingsActivity.java +++ b/powerbell/src/main/java/cc/winboll/studio/powerbell/activities/SettingsActivity.java @@ -22,6 +22,7 @@ import cc.winboll.studio.powerbell.models.ThoughtfulServiceBean; import cc.winboll.studio.powerbell.utils.ChargeMailNotifyHelper; import cc.winboll.studio.powerbell.utils.ChargeMailNotifyFloatWindow; import cc.winboll.studio.powerbell.threads.RemindThread; +import cc.winboll.studio.powerbell.services.ControlCenterService; import android.widget.Switch; import java.lang.reflect.Field; @@ -262,8 +263,13 @@ public class SettingsActivity extends WinBoLLActivity implements IWinBoLLActivit LogUtils.d(TAG, "onChargeMailNotifySwitchChanged: 充电邮件通知开关状态=" + isChecked); ChargeMailNotifyHelper.setEnabled(this, isChecked); updateSMTPConfigViewEnabled(isChecked); - // 关闭时停止RemindThread并关闭悬浮窗 - if (!isChecked) { + if (isChecked) { + // 开启时重启ControlCenterService + LogUtils.d(TAG, "onChargeMailNotifySwitchChanged: 开启充电邮件通知,重启ControlCenterService"); + stopService(new Intent(this, ControlCenterService.class)); + startService(new Intent(this, ControlCenterService.class)); + } else { + // 关闭时停止RemindThread并关闭悬浮窗 LogUtils.d(TAG, "onChargeMailNotifySwitchChanged: 关闭充电邮件通知,停止RemindThread"); RemindThread.stopRemindThread(); LogUtils.d(TAG, "onChargeMailNotifySwitchChanged: 关闭充电邮件通知悬浮窗"); diff --git a/powerbell/src/main/java/cc/winboll/studio/powerbell/services/ControlCenterService.java b/powerbell/src/main/java/cc/winboll/studio/powerbell/services/ControlCenterService.java index 0c301d9..1e8fee6 100644 --- a/powerbell/src/main/java/cc/winboll/studio/powerbell/services/ControlCenterService.java +++ b/powerbell/src/main/java/cc/winboll/studio/powerbell/services/ControlCenterService.java @@ -95,9 +95,10 @@ public class ControlCenterService extends Service { LogUtils.d(TAG, "onDestroy() 执行:服务销毁流程启动"); super.onDestroy(); - // 资源释放顺序:前台服务 → 线程 → 广播接收器 → Handler → 通知 → 引用(避免内存泄漏) + // 资源释放顺序:前台服务 → 线程 → 悬浮窗 → 广播接收器 → Handler → 通知 → 引用(避免内存泄漏) stopForegroundService(); RemindThread.stopRemindThread(); + ChargeMailNotifyFloatWindow.dismissWindow(); releaseBroadcastReceiver(); destroyHandler(); releaseNotificationResource();