Thread Pada Android
Ø
Pengertian Thread
Sebelum mengulas contoh thread pada
android, sebaiknya kita mengetahui apa itu thread? Ulir, utas atau thread (singkatan
dari "thread of execution") dalam ilmu komputer,
diartikan sebagai sekumpulan perintah (instruksi) yang dapat
dilaksanakan/dieksekusi secara sejajar
dengan thread lainnya, dengan menggunakan cara time slice (ketika
satu CPU melakukan perpindahan
antara satu ulir ke ulir lainnya) atau multiprocess (ketika ulir-ulir
tersebut dilaksanakan oleh CPU yang berbeda dalam satu sistem). Ulir sebenarnya
mirip dengan proses, tetapi cara berbagi sumber
daya antara proses dengan ulir sangat berbeda.
Multiplethread dapat dilaksanakan
secara sejajar pada sistem komputer. Secara
umum multithreading melakukan time-slicing (sama
dengan time-division multipleks), di mana sebuah CPU bekerja pada
ulir yang berbeda, di mana suatu kasus ditangani tidak sepenuhnya secara
serempak, untuk CPU tunggal pada dasarnya benar-benar melakukan sebuah
pekerjaan pada satu waktu. Teknik penggantian (switching) ini memungkinkan CPU
seolah-olah bekerja secara serempak.
User level thread adalah thread yang tampak oleh
programmer dan tidak diketahui oleh kernel. User level thread secara tipikal
dikelola oleh sebuah library thread di ruang user. Kernel level thread didukung
dan dikelola oleh kernel sistem operasi. Secara umum, user level thread lebih
cepat dalam pembuatan dan pengelolaan dari pada kernel thread. Ada tiga
perbedaan tipe dari model yang berhubungan dengan user dan kernel thread atau
yang biasa disebut Multithreading Models yaitu :
·
Model many to one:
memetakan beberapa user level thread hanya ke satu buah kernel thread.
·
Model one to one:
memetakan setiap user thread ke dalam satu kernel thread. Berakhir.
·
Model many to many:
mengizinkan pengembang untuk membuat user thread sebanyak mungkin, konkurensi
tidak dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh
kernel dalam satu waktu.
Ø
Thread Pada Android
Ketika sebuah aplikasi
diluncurkan, sistem membuat thread eksekusi untuk aplikasi, yang disebut
"utama." Thread ini sangat penting karena bertugas mengirim acara ke
widget antarmuka pengguna yang sesuai, termasuk menggambar kegiatan. Hal ini
juga hampir selalu thread di mana aplikasi Anda berinteraksi dengan komponen
dari toolkit UI Android (komponen dari paket android.widget dan android.view ).
Dengan demikian, utas utama juga terkadang disebut utas UI. Namun, dalam
keadaan khusus, utas utama aplikasi mungkin bukan utas UI-nya; untuk informasi
lebih lanjut, lihat Anotasi ulir .
Sistem tidak membuat
utas terpisah untuk setiap komponen. Semua komponen yang berjalan dalam proses
yang sama digunakan dalam untaian UI, dan panggilan sistem ke setiap komponen
dikirim dari utas itu. Akibatnya, metode yang menanggapi callback sistem
(seperti onKeyDown() untuk melaporkan tindakan pengguna atau metode callback
siklus hidup) selalu berjalan di thread UI dari proses.
Misalnya, ketika
pengguna menyentuh tombol di layar, thread UI aplikasi Anda mengirimkan acara
sentuhan ke widget, yang pada gilirannya menetapkan keadaan yang ditekan dan
mengirim permintaan yang tidak valid ke antrean acara. Thread UI mendeacekan
permintaan dan memberi tahu widget yang harus digambar ulang itu sendiri.
Ketika aplikasi Anda
melakukan pekerjaan intensif sebagai tanggapan terhadap interaksi pengguna,
model satu utas ini dapat menghasilkan kinerja yang buruk kecuali Anda
menerapkan aplikasi dengan benar. Khususnya, jika semuanya terjadi di utas UI,
melakukan operasi panjang seperti akses jaringan atau kueri basis data akan
memblokir seluruh UI. Ketika utas diblokir, tidak ada acara yang dapat dikirim,
termasuk acara menggambar. Dari perspektif pengguna, aplikasi tampak
menggantung. Lebih buruk lagi, jika thread UI diblokir selama lebih dari
beberapa detik (sekitar 5 detik saat ini) pengguna disajikan dengan dialog "
aplikasi tidak menanggapi " (ANR) yang terkenal. Pengguna mungkin kemudian
memutuskan untuk berhenti dari aplikasi Anda dan menghapusnya jika mereka tidak
puas.
Selain itu, perangkat UI
tidak aman. Jadi, Anda tidak boleh memanipulasi UI Anda dari untaian pekerja —
Anda harus melakukan semua manipulasi ke antarmuka pengguna Anda dari utas UI.
Jadi, hanya ada dua aturan untuk model utas tunggal Android:
·
Jangan memblok UI
thread. Misalnya saat user menekan
tombol, maka app menjalankan program yang loop sejuta kali sehingga membuat
user interface macet. Ini akan berakibat muncul error ANR (App Not Responding).
Resources pada smartphone jauh lebih terbatas daripada PC/laptop, sehingga
aturan ini lebih ketat.
·
Jangan mengakses
komponen UI di luar UI thread. Misalnya ada thread kedua dan thread ini
mengakses TextView, Button dsb. Ini dapat menyebabkan error yang tidak terduga.
Komentar
Posting Komentar