Я считаю, что это связано с управлением питанием.Вы пробовали использовать блокировку пробуждения?
Чтобы проверить, является ли это вашей проблемой, просто добавьте android: keepScreenOn = "true" в макет действия, в котором запущен поток.
Еслиэто решает проблему, и вам не нужен экран, подумайте о прочтении этой темы:
https://developer.android.com/training/scheduling/wakelock
Чтобы получить пробуждение от замка, вы должны добавить это в свой манифест:
<uses-permission android:name="android.permission.WAKE_LOCK" />
И установить вручную блокировку пробуждения:
val wakeLock: PowerManager.WakeLock =
(getSystemService(Context.POWER_SERVICE) as PowerManager).run {
newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyApp::MyWakelockTag").apply {
acquire()
}
}
Чтобы вручную разблокировать ее, вы можете сделать это с помощью:
wakelock.release()
Кроме того, из того же источника, и кажетсямне, что это может быть применено к вашей проблеме, проверьте это:
Перед добавлением поддержки wakelock в ваше приложение, подумайте, поддерживают ли варианты использования вашего приложения одно из следующих альтернативных решений:
"Если ваше приложение выполняет длительную загрузку HTTP, рассмотрите возможность использования DownloadManager. Если ваше приложение синхронизирует данные с внешнего сервера, рассмотрите возможность создания адаптера синхронизации. Если ваше приложение использует фоновые службы, рассмотрите возможностьиспользуя JobScheduler или Firebase Cloud Messaging для запуска этих служб через определенные промежутки времени. "
Надеюсь, это поможет.