Функция onStopped() не вызывается для workmanager

#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") } ; Я также пытаюсь заставить остановиться в настройках, это не работает.