From 97f42054d2187d9f74dfe593f10f63461089b74d Mon Sep 17 00:00:00 2001 From: MiMo Date: Sat, 18 Jul 2026 05:21:48 +0800 Subject: [PATCH] =?UTF-8?q?=20=E4=BC=98=E5=8C=96=20ChargeMailNo?= =?UTF-8?q?tify=20=E5=BC=80=E5=85=B3=E8=81=94=E5=8A=A8=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. SettingsActivity 充电邮件通知开关 - 开启时:先 stopService 再 startService 重启 ControlCenterService - 关闭时:停止 RemindThread 并关闭悬浮窗 2. ControlCenterService 服务销毁 - onDestroy 中关闭 ChargeMailNotifyFloatWindow 悬浮窗 - 资源释放顺序:前台服务 → 线程 → 悬浮窗 → 广播接收器 → Handler → 通知 --- .../studio/powerbell/activities/SettingsActivity.java | 10 ++++++++-- .../powerbell/services/ControlCenterService.java | 3 ++- 2 files changed, 10 insertions(+), 3 deletions(-) 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();