Handler Là Gì

     

Hôm ni mình đã chỉ cho mình cách làm nạm nào để khai quật các tiện ích từ Handler trong app android hiệu quả. Khi khám phá ra những kĩ năng vô cùng hoàn hảo và tuyệt vời nhất này của Handlers. Tôi đã thật quá bất ngờ khi biết rằng chúng thật tiện dụng và dễ dàng sử dụng.

Bạn đang xem: Handler là gì


Handler là gì?

Đầu tiên, Handlers ko phải là 1 khái niệm mới, bọn chúng đã tất cả từ hết sức lâu. Cụ thể là bao lâu? Theo mình được biết thì là trường đoản cú thời API cấp độ 1 rồi. Tuy nhiên vậy, bản thân vẫn luôn cảm thấy các bạn vẫn chưa thực sự khai thác triệt để, nói cả tôi cũng vậy ^^.

Có thể hiểu Handler là một trong class khi khai báo trong ứng dụng nó vẫn có công dụng giống cùng với “listener” của các control khác trên màn hình. Điểm biệt lập là những control không giống thì lắng tai “onKey”, “onClick” còn Handlers cho nên handleMessage.

Vậy, một Handler hoàn toàn có thể làm gì?

Sắp xếp cùng xử lý các messagesSắp xếp và tiến hành các RunnablesCó thể chạy trên một Thread khác nơi mà Handler được sản xuất raCó thể tái sử dụng nhiều lần khi cần

*

Tìm hiểu cách sử dụng Handler vào Android

Handler trong apk có một tinh giảm là “sự ko rõ ràng”. Nó ko phải là 1 Runnable, mà cũng không hẳn là Thread

Bạn hoàn toàn có thể xem Handler như là 1 trong cơ chế cao cấp để xử trí hàng đợi. Bài toán hàng chờ này cất Messages tuyệt Runnables, hay bài toán chúng yêu cầu được xử lý trên main thread hay những background thread ko quan trọng.

Handler vẫn vẫn được tạo nên để cách xử trí đống Messages này, từng loại một. Cùng đây đó là điều cần được nhớ.

Xem thêm: Phím Tắt Merge Cell Trong Word 2010, Phím Tắt Merge Cell Trong Word

Một ví dụ nổi bật của việc sử dụng Handler: khi bạn có một Runnable và chúng ta làm gì đấy với background game android thread. Và cho một lúc – bạn muốn cập nhật dữ liệu lên UI.

Trong trường hợp này, các bạn hãy gán cực hiếm cần update cho Handler bởi cú pháp new Handler(Looper.getMainLooper). Tiếp nối gọi handler.post()thực hiện quá trình của UI phía bên trong post(). Thật tuyệt cần không nào?

private void postTaskInsideBackgroundTask() Thread backgroundThread = new Thread(new Runnable()
Override public void run() // pretend to vày something "background-y" try TimeUnit.SECONDS.sleep(1); catch (InterruptedException e) e.printStackTrace(); mainThreadHandler.post(new Runnable()
Override public void run() tv04.setText("Hi from a Handler inside of a background Thread!"); ); ); backgroundThread.start(); Chúng ta mọi biết rằng, một AsyncTask chỉ hoàn toàn có thể được thực hiện một lần. Điều này không xẩy ra với Handlers.

Thậm chí tất cả một lớp quánh biệt có thể xử lý một vài các Handlers cùng lúc sẽ là HandlerThread.

Xem thêm: Chữa Viêm Họng Hạt Tại Nhà Nhanh Bằng 7 Cách Chữa Viêm Họng Hạt Nhanh Nhất

HandlerThread rất có thể thay phiên xử lý cho cả Looper, một giải pháp tự động. Vày vậy chúng ta không nên phải băn khoăn lo lắng về điều này.

Để cho chính mình thấy được sự không giống nhau giữa Handler, Thread và Runnable. Bản thân đã tạo nên một dự án ví dụ với cách thực hiện Handler không giống nhau. Bạn tải về ở link dưới nhé


tải về source code

Cuối cùng

Trong dự án example này, mình đã cố gắng bình luận rất chi tiết từng hàm để bạn có thể đọc hiểu dễ dàng dàng. Hãy chạy code này và trải nghiệm thử Handler đi nhé, nó rất đáng để thử đó!