Каждый android.os.Handler
имеет свой собственный связанный поток. Нить - это дорогой ресурс. В лучших методах программирования вы никогда не должны создавать новые потоки для очень маленьких операций.
Android уже поставляется с Dispatchers.Main
CoroutineDispatcher, который работает в потоке пользовательского интерфейса навсегда.
Вы можете использовать его для Запустите сопрограмму непосредственно в потоке пользовательского интерфейса:
class MainActivity : AppCompatActivity() {
private var job = Job()
private var scope = CoroutineScope(Disptachers.Main + job)
...
override fun onCreate(savedInstanceState: Bundle?) {
...
if(!job.isActive) {
job = Job()
scope += job
}
...
val viewChangeJob = scope.launch { // can omit creating variable if you don't need
delay(3_000)
firsttxtview.setText(array[0])
// or change text every 3 sec taking every element of array
// for(item in array) {
// delay(3_000)
// firsttxtview.setText(item)
// }
}
}
override fun onDestroy() {
job.cancel()
}
Здесь вы также можете полностью контролировать задания, их можно отменить или приостановить и т. д. c. Он также отменяет себя после того, как активность была уничтожена!