post : post khiến Runnable được thêm vào hàng đợi tin nhắn,
Runnable: Đại diện cho một lệnh có thể được thực thi. Thường được sử dụng để chạy mã trong một Thread khác.
run () : Bắt đầu thực thi phần đang hoạt động của mã lớp. Phương thức này được gọi khi một luồng được bắt đầu đã được tạo với một lớp triển khai Runnable.
getView().post(new Runnable() {
@Override
public void run() {
getView().startAnimation(a);
}
});
mã :getView().startAnimation(a);
trong mã của bạn,
bài đăng khiến Runnable ( mã sẽ được chạy trong một chuỗi khác) để thêm hàng đợi tin nhắn.
Vì vậy startAnimation sẽ được kích hoạt trong một chuỗi mới khi nó được tìm nạp từ messageQueue
[CHỈNH SỬA 1]
Tại sao chúng ta sử dụng một luồng mới thay vì luồng giao diện người dùng (luồng chính)?
Chủ đề giao diện người dùng:
Khi ứng dụng được khởi động, Ui Thread được tạo tự động
nó chịu trách nhiệm gửi các sự kiện đến các vật dụng thích hợp và điều này bao gồm các sự kiện vẽ.
Nó cũng là chuỗi bạn tương tác với các tiện ích Android
Ví dụ: nếu bạn chạm vào nút trên màn hình, chuỗi giao diện người dùng sẽ gửi sự kiện cảm ứng đến tiện ích con, từ đó thiết lập trạng thái được nhấn của nó và đăng yêu cầu vô hiệu hóa hàng đợi sự kiện. Chuỗi giao diện người dùng sắp xếp lại yêu cầu và thông báo cho tiện ích con để tự vẽ lại.
Điều gì xảy ra nếu người dùng nhấn một nút sẽ thực hiện LongOperation?
((Button)findViewById(R.id.Button1)).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
final Bitmap b = loadImageFromNetwork();
mImageView.setImageBitmap(b);
}
});
Giao diện người dùng bị đóng băng. Chương trình thậm chí có thể bị sập.
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
final Bitmap b = loadImageFromNetwork();
mImageView.setImageBitmap(b);
}
}).start();
}
Nó phá vỡ quy tắc Android không bao giờ cập nhật giao diện người dùng trực tiếp từ chuỗi công nhân
Android cung cấp một số cách để truy cập chuỗi giao diện người dùng từ các chuỗi khác.
- Activity.runOnUiThread (Runnable)
- View.post (Runnable)
- View.postDelayed (Runnable, lâu)
- Người xử lý
Như bên dưới,
View.post (Runnable)
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();
}
Người xử lý
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();
}

Để biết thêm thông tin
http://android-developers.blogspot.com/2009/05/p Đau-threading.html
http://www.aviyehuda.com/blog/2010/12/20/android-multithreading-in-a-ui-enosystem/