Có một số cách để cập nhật giao diện người dùng của bạn và sửa đổi View
chẳng hạn như TextView
từ bên ngoài Chủ đề giao diện người dùng. A Handler
chỉ là một phương pháp.
Dưới đây là ví dụ cho phép một đơn Handler
trả lời các loại yêu cầu khác nhau.
Ở cấp lớp định nghĩa một đơn giản Handler
:
private final static int DO_UPDATE_TEXT = 0;
private final static int DO_THAT = 1;
private final Handler myHandler = new Handler() {
public void handleMessage(Message msg) {
final int what = msg.what;
switch(what) {
case DO_UPDATE_TEXT: doUpdate(); break;
case DO_THAT: doThat(); break;
}
}
};
Cập nhật giao diện người dùng trong một trong những chức năng của mình, mà bây giờ trên UI Thread:
private void doUpdate() {
myTextView.setText("I've been updated.");
}
Từ bên trong nhiệm vụ không đồng bộ của bạn, gửi tin nhắn đến Handler
. Có một số cách để làm điều đó. Đây có thể là đơn giản nhất:
myHandler.sendEmptyMessage(DO_UPDATE_TEXT);
gì về 'Handler lớp nên tĩnh khác rò rỉ bộ nhớ có thể occur' cảnh báo? – nmxprime
vui lòng tìm [** bài đăng blog **] (http://www.androiddesignpatterns.com/2013/01/inner-class-handler-memory-leak.html) và câu trả lời này (http://stackoverflow.com/question/11407943/this-handler-class-should-be-static-hoặc-leaks-có thể-xảy ra-incominghandler) để có được cái nhìn sâu sắc hơn về điều này –
tôi khuyên bạn nên weakHandler ở đây để tránh rò rỉ. https://github.com/badoo/android-weak-handler – j2emanue