Я хочу планировать фоновый сервис каждые 5 минут.Я использую HandlerThread и Handler для управления потоками и JobIntentService для выполнения задачи.Мой код работает в методе onCreate моего циферблата, который является основным приложением, которое всегда отображается на моих умных часах.
Устройство работает на основе ОС OS, и в результате мой код работает отлично, когда ям, отладка и SmartWatch подключен к кабелю.Но моя проблема начинается, когда я отсоединяю умные часы, и циферблат переходит в режим энергосбережения (= режим окружения для разработчиков Wear OS):
Внезапно система не планирует потоки на указанное время, и яначать иметь задержки.Я хочу запускать свой сервис каждый конкретный раз.
Я не знаю, должен ли я вместо этого использовать Alarm Manager.
Это код для обработчиков:
fun manageTestingTaskSchedule() {
val handlerThread = HandlerThread("handler-thread", Process.THREAD_PRIORITY_URGENT_AUDIO)
handlerThread.start()
val handler = Handler(handlerThread.looper)
handler.postAtFrontOfQueue(RunnableTestingTask(this@MyWatchFaceSOSApp, handler))
}
Я дал самый высокий приоритет потокам, чтобы не получать задержки при планировании их.
Это код для потока, который запускает службу:
class RunnableTestingTask(val watchfaceContext: Context, val handler: Handler): Runnable {
val TAG = "RunnableTestingTask"
override fun run() {
val currentThread = Thread.currentThread()
Log.i(TAG, "Thread name : " + currentThread.name + " thread priority : " + Process.getThreadPriority(Process.myTid()))
if(WifiConnectivityChecker(watchfaceContext).isConnectedWifi()) {
val sosMsgToGatewayIntent = Intent()
PresenceReportService().enqueueWork(watchfaceContext, sosMsgToGatewayIntent)
} else if(!WifiConnectivityChecker(watchfaceContext).isConnectedWifi()) {
Log.i(TAG, "La conexion WIFI con la pasarela no se ha establecido")
}
handler.postDelayed(this, 300000)
}
}