GlobalScope не работает в виджете после перезагрузки телефона - PullRequest
0 голосов
/ 23 апреля 2020

В последнее время мне нужен код l oop, который обновляет пользовательский интерфейс виджета, поэтому я создал пример программы для виджетов и протестировал код l oop.

, но ниже приведен код GlobalScope.lauch. остановился после нескольких работ, когда телефон перезагружается и запускается виджет. (без перезагрузки телефона, приведенный ниже код выглядит нормально)

когда я использую приведенный ниже код с событием нажатия кнопки виджета (процедура GlobalScope.launch), он выглядит хорошо.

я не знаю, почему это случиться?

GlobalScope.launch usecase

private lateinit var localContext : Context

class SimpleTestWidget : AppWidgetProvider() {

      ...
      override fun onEnabled(context: Context) {
          Toast.makeText(context,"onEnabled",Toast.LENGTH_SHORT).show()
          localContext  = context
          GlobalScope.launch {
              //infinite while loop : just for test
              while(true) {
                 delay(6000)
                 withContext(Dispatchers.Main) {
                    Toast.makeText(localContext,"GlobalLaunchTest",Toast.LENGTH_SHORT).show()
                 }
              }
          }   
      }

}

при перезагрузке телефона, окно сообщения Toast появляется несколько раз. но через некоторое время он не работает.

вы можете воспроизвести его на эмуляторе android или на реальном устройстве телефона. (в моем случае просто 4 ~ 5 раз работает)

...