Adakah yang bisa memberi tahu saya jika ada perbedaan antara menggunakan runOnUiThread () versus Looper.getMainLooper (). Post () untuk menjalankan tugas di thread UI di Android ??
Tentang satu-satunya hal yang dapat saya tentukan adalah bahwa karena runOnUiThread adalah metode Aktivitas non-statis, Looper.getMainLooper (). Post () lebih nyaman ketika Anda perlu membuat kode sesuatu di kelas yang tidak dapat melihat Aktivitas (seperti antarmuka).
Saya tidak sedang mencari diskusi tentang APAKAH sesuatu harus dijalankan pada UI thread, saya mengerti bahwa beberapa hal tidak dapat dan banyak hal yang tidak seharusnya, namun beberapa hal (seperti memulai AsyncTask) HARUS dijalankan dari utas UI.
Terima kasih,
R.
android
android-ui
Kaya
sumber
sumber
runOnUiThread
akan memeriksa apakah itu sudah menjadi UI thread dan menjalankan tugas Anda secara langsung alih-alih mempostingnya sebagaiMessage
Jawaban:
Perilaku berikut ini sama saat dipanggil dari thread latar belakang:
menggunakan
Looper.getMainLooper()
menggunakan
Activity#runOnUiThread()
Satu-satunya perbedaan adalah ketika Anda melakukannya dari thread UI sejak itu
akan memeriksa apakah Thread saat ini sudah menjadi thread UI dan kemudian menjalankannya secara langsung. Mempostingnya sebagai pesan akan menunda eksekusi sampai Anda kembali dari metode UI-thread saat ini.
Ada juga cara ketiga untuk mengeksekusi
Runnable
di thread UI yaituView#post(Runnable)
- cara ini akan selalu memposting pesan bahkan saat dipanggil dari thread UI. Itu berguna karena itu akan memastikan bahwaView
telah dibangun dengan benar dan memiliki tata letak sebelum kode dijalankan.sumber