post : post menyebabkan Runnable ditambahkan ke antrian pesan,
Runnable: Merupakan perintah yang dapat dijalankan. Sering digunakan untuk menjalankan kode di Thread yang berbeda.
run () : Mulai menjalankan bagian aktif dari kode kelas. Metode ini dipanggil saat utas dimulai yang telah dibuat dengan kelas yang mengimplementasikan Runnable.
getView().post(new Runnable() {
@Override
public void run() {
getView().startAnimation(a);
}
});
kode :getView().startAnimation(a);
dalam kode Anda,
posting menyebabkan Runnable ( kode akan dijalankan di utas yang berbeda) untuk menambahkan antrian pesan.
Jadi startAnimation akan diaktifkan di utas baru saat diambil dari messageQueue
[EDIT 1]
Mengapa kami menggunakan utas baru, bukan utas UI (utas utama)?
Benang UI:
Saat aplikasi dimulai, Ui Thread dibuat secara otomatis
itu bertanggung jawab untuk mengirimkan acara ke widget yang sesuai dan ini termasuk acara menggambar.
Ini juga merupakan utas tempat Anda berinteraksi dengan widget Android
Misalnya, jika Anda menyentuh tombol a di layar, untaian UI mengirimkan peristiwa sentuh ke widget yang pada gilirannya menyetel status tertekannya dan memposting permintaan yang tidak valid ke antrean peristiwa. Rangkaian UI menghentikan permintaan dan memberi tahu widget untuk menggambar ulang sendiri.
Apa yang terjadi jika pengguna menekan tombol yang akan melakukan longOperation?
((Button)findViewById(R.id.Button1)).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
final Bitmap b = loadImageFromNetwork();
mImageView.setImageBitmap(b);
}
});
UI membeku. Program bahkan mungkin macet.
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
final Bitmap b = loadImageFromNetwork();
mImageView.setImageBitmap(b);
}
}).start();
}
Ini melanggar aturan android yang tidak pernah mengupdate UI langsung dari thread pekerja
Android menawarkan beberapa cara untuk mengakses thread UI dari thread lain.
- Activity.runOnUiThread (Runnable)
- View.post (Dapat Dijalankan)
- View.postDelayed (Dapat dijalankan, panjang)
- Penangan
Seperti di bawah ini,
View.post (Dapat Dijalankan)
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
final Bitmap b = loadImageFromNetwork();
mImageView.post(new Runnable() {
public void run() {
mImageView.setImageBitmap(b);
}
});
}
}).start();
}
Penangan
final Handler myHandler = new Handler(Looper.getMainLooper());
(new Thread(new Runnable() {
@Override
public void run() {
final Bitmap b = loadImageFromNetwork();
myHandler.post(new Runnable() {
@Override
public void run() {
mImageView.setImageBitmap(b);
}
});
}
})).start();
}

Untuk info lebih lanjut
http://android-developers.blogspot.com/2009/05/painless-threading.html
http://www.aviyehuda.com/blog/2010/12/20/android-multithreading-in-a-ui-environment/