Fix doze mode sleeping for message retrieval thread.

Fixes #13650
This commit is contained in:
Cody Henthorne
2024-08-15 13:59:06 -04:00
committed by mtang-signal
parent 560086a1c2
commit 1fdb3ffb03
2 changed files with 9 additions and 2 deletions

View File

@@ -28,10 +28,13 @@ import org.thoughtcrime.securesms.messages.MessageDecryptor.FollowUpOperation
import org.thoughtcrime.securesms.messages.protocol.BufferedProtocolStore
import org.thoughtcrime.securesms.notifications.NotificationChannels
import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.util.AlarmSleepTimer
import org.thoughtcrime.securesms.util.AppForegroundObserver
import org.thoughtcrime.securesms.util.SignalLocalMetrics
import org.thoughtcrime.securesms.util.asChain
import org.whispersystems.signalservice.api.push.ServiceId
import org.whispersystems.signalservice.api.util.SleepTimer
import org.whispersystems.signalservice.api.util.UptimeSleepTimer
import org.whispersystems.signalservice.api.websocket.WebSocketConnectionState
import org.whispersystems.signalservice.api.websocket.WebSocketUnavailableException
import org.whispersystems.signalservice.internal.push.Envelope
@@ -353,9 +356,13 @@ class IncomingMessageObserver(private val context: Application) {
private inner class MessageRetrievalThread : Thread("MessageRetrievalService"), Thread.UncaughtExceptionHandler {
private var sleepTimer: SleepTimer
init {
Log.i(TAG, "Initializing! (${this.hashCode()})")
uncaughtExceptionHandler = this
sleepTimer = if (!SignalStore.account.fcmEnabled || SignalStore.internal.isWebsocketModeForced) AlarmSleepTimer(context) else UptimeSleepTimer()
}
override fun run() {
@@ -366,7 +373,7 @@ class IncomingMessageObserver(private val context: Application) {
if (attempts > 1) {
val backoff = BackoffUtil.exponentialBackoff(attempts, TimeUnit.SECONDS.toMillis(30))
Log.w(TAG, "Too many failed connection attempts, attempts: $attempts backing off: $backoff")
ThreadUtil.sleep(backoff)
sleepTimer.sleep(backoff)
}
waitForConnectionNecessary()