#android #kotlin
Вопрос:
Я создаю приложение, которое может развертывать периодическую работу с помощью workmanager, и я хочу выполнить некоторые действия, такие как сохранение значения ключа в sharePreference или загрузка данных в firebase, когда работа будет остановлена либо самими пользователями, либо каким-либо образом системой, путем переопределения метода onStopped. Но это не работает. Я также протестировал его, установив кнопку, чтобы вручную отменить работу, используя cancelAllWorkByTag
ее, чтобы проверить, как она работает, и ничего не работает. Кто-нибудь может мне помочь?
override fun onStopped() { super.onStopped() val sharedPreferences = applicationContext.getSharedPreferences("AppSharedPreference", Context.MODE_PRIVATE) with(sharedPreferences.edit()) { putString("working_state", "STOPPED") commit() } val db = Firebase.firestore val now = DateTime.now() val input = hashMapOf("timestamp" to now.toString(), "stopped" to "the service is somehow stopped") db.collection("test").document(now.toString()).set(input, SetOptions.merge()) }
Комментарии:
1. Можете ли вы также поделиться кодом кнопки, который вы используете для отмены работы?
2. @Putra Nugraha, кнопка «стоп» довольно проста, я просто добавляю функцию:
val stop = findViewByIdlt;Buttongt;(R.id.button2) stop.setOnClickListener{ stopWork() }
;private fun stopWork() { WorkManager.getInstance().cancelAllWorkByTag("periodicWork") }
; Я также пытаюсь заставить остановиться в настройках, это не работает.