Sử dụng BroadcastReceiver lắng nghe kết quả từ Service

2100

1. Giới thiệu Service

Có những lúc bạn sẽ thực hiện một số hoạt động tốn thời gian dài. Giống như việc xử lý một số dữ liệu lớn, tải xuống một tập tin từ Internet hoặc có thể chỉ phát một số bài nhạc trên thiết bị. Trong các trường hợp này chúng ta sẽ sử dụng Service.

2. BroadcastReceiver lắng nghe kết quả từ Service

Trong bài viết này chúng ta sẽ đi đến một ví dụ khác với các service cơ bản là chỉ chạy nền, chúng ta sẽ kết hợp service với BroadcastReceiver lắng nghe dữ liệu từ service trả về.
Xem thêm về service tại đây.

Bài toán cơ bản:

  • Ở Main Activity tôi có môt TextView tôi muốn dữ liệu sẽ được hiện thị khi service xử lý một cái gì đó và trả về kết quả.

3. Các bước thực hiện

  • Tạo MyService.java

Tác dụng của service này là sau 2s nó sẽ push data qua  Broadcast bằng hàm sendBroadcast() kèm theo IntentFilter. Cụ thể là mình sẽ push 1 cái String đơn giản qua.

Lưu ý nhỏ ở đây mình sử dụng loại sticky :START_REDELIVER_INTENT vì sao mình dùng nó mà không dùng loại khác thì các bạn xem comment code hoặc xem tại đây.

Khai báo service trong Androidmanifest.xml

 

  • MainActivity.java các bạn tạo một BroadcastReceiver để lắng nghe service và update UI như sau.

Cụ thể ở OnReceive khi service sendBroadcast() với action tương ứng thì sẽ được hứng tại đây.

Đầy đủ code ở MainActivity.java của chúng ta sẽ như sau:

Tiến hành chạy và kiểm tra kết quả.
Source Github.