diff --git a/app/src/main/java/com/xiaoqu/watch/service/MqttService.kt b/app/src/main/java/com/xiaoqu/watch/service/MqttService.kt index bbb5421..82fd5f6 100644 --- a/app/src/main/java/com/xiaoqu/watch/service/MqttService.kt +++ b/app/src/main/java/com/xiaoqu/watch/service/MqttService.kt @@ -8,7 +8,6 @@ import android.content.Context import android.content.Intent import android.os.Build import android.os.IBinder -import android.os.PowerManager import com.xiaoqu.watch.R import com.xiaoqu.watch.service.manager.MqttManager import dagger.hilt.android.AndroidEntryPoint @@ -20,7 +19,11 @@ import javax.inject.Inject * * 保持 MQTT 连接在息屏/Doze 模式下不被系统杀死。 * 通过 startForegroundService() 启动,显示常驻通知。 - * 持有 PARTIAL_WAKE_LOCK 防止 CPU 休眠断连。 + * 不持有永久 WakeLock(省电),依赖: + * - 前台服务:防止进程被杀 + * - 电池白名单:绕过 Doze 网络限制 + * - Paho 库内置心跳机制:自动维护连接 + * - AlarmManager 健康检查:兜底重连 */ @AndroidEntryPoint class MqttService : Service() { @@ -49,9 +52,6 @@ class MqttService : Service() { @Inject lateinit var mqttManager: MqttManager - /** 保持 CPU 唤醒,防止息屏后 MQTT 心跳丢失 */ - private var wakeLock: PowerManager.WakeLock? = null - override fun onCreate() { super.onCreate() Timber.d("MqttService: onCreate") @@ -62,10 +62,7 @@ class MqttService : Service() { // 启动前台服务(必须在 5 秒内调用,否则 ANR) startForeground(NOTIFICATION_ID, buildNotification()) - // 获取 PARTIAL_WAKE_LOCK 保持 CPU 运行 - acquireWakeLock() - - // 连接 MQTT + // 连接 MQTT(Paho 库内部会管理自己的心跳和重连) mqttManager.connect() } @@ -82,7 +79,6 @@ class MqttService : Service() { override fun onDestroy() { super.onDestroy() Timber.d("MqttService: onDestroy") - releaseWakeLock() mqttManager.disconnect() } @@ -120,26 +116,4 @@ class MqttService : Service() { .build() } - /** 获取 WakeLock 保持 CPU 唤醒 */ - private fun acquireWakeLock() { - val pm = getSystemService(Context.POWER_SERVICE) as PowerManager - wakeLock = pm.newWakeLock( - PowerManager.PARTIAL_WAKE_LOCK, - "xqwatch:mqtt_service" - ).apply { - acquire() // 持续持有,直到服务销毁时释放 - } - Timber.d("MqttService: WakeLock acquired") - } - - /** 释放 WakeLock */ - private fun releaseWakeLock() { - wakeLock?.let { - if (it.isHeld) { - it.release() - Timber.d("MqttService: WakeLock released") - } - } - wakeLock = null - } }