Broadcast receivers là một thành phần quan trọng trong hệ thống Android, cho phép ứng dụng nhận và phản ứng với các thông báo (broadcast) từ hệ thống hoặc các ứng dụng khác. Broadcast là một cách để truyền thông điệp giữa các thành phần trong hệ thống Android, giúp các ứng dụng giao tiếp và tương tác với nhau.
Với Broadcast receivers, bạn có thể lắng nghe các sự kiện hệ thống như kết nối mạng thay đổi, nguồn pin yếu, hoặc thông báo từ hệ thống như tin nhắn SMS, cuộc gọi đến. Ngoài ra, bạn cũng có thể đăng ký Broadcast receivers để nhận thông báo từ các ứng dụng khác, ví dụ như nhận thông báo khi có sự kiện mới trong ứng dụng xã hội, tin tức, hoặc đặt lịch hẹn.
Broadcast receivers được xác định trong mã nguồn của ứng dụng và được đăng ký với hệ thống thông qua Intent Filters. Intent Filters định nghĩa các tiêu chí để lọc các Broadcast phù hợp với Broadcast receivers. Khi Broadcast phù hợp được gửi đi, hệ thống sẽ kích hoạt Broadcast receivers tương ứng và chạy phương thức xử lý để xử lý thông báo nhận được.
Broadcast receivers giúp ứng dụng trở nên linh hoạt và phản ứng nhanh với các sự kiện hệ thống và ứng dụng. Bằng cách sử dụng Broadcast receivers, bạn có thể xây dựng các tính năng như đồng bộ hóa dữ liệu, cập nhật giao diện người dùng, hoặc thực hiện các tác vụ nền mà không cần người dùng tương tác trực tiếp.
Trên tổng thể, Broadcast receivers là một công cụ mạnh mẽ trong phát triển ứng dụng Android, giúp kết nối và tương tác giữa các thành phần của hệ thống và các ứng dụng khác.
Xem thêm Cài đặt android studio & SDK
Broadcast receivers là gì ?
Broadcast trong android là các sự kiện trên toàn hệ thống có thể xảy ra khi thiết bị khởi động, khi nhận được tin nhắn trên thiết bị hoặc khi nhận được cuộc gọi đến hoặc khi thiết bị chuyển sang chế độ trên máy bay, v.v. Broadcast receivers được sử dụng để phản hồi các sự kiện trên toàn hệ thống. Broadcast receivers cho phép chúng tôi đăng ký các sự kiện của hệ thống và ứng dụng, và khi sự kiện đó xảy ra, bộ thu đăng ký sẽ được thông báo. Chủ yếu có hai loại máy thu phát sóng:
Static Broadcast Receivers: Các loại bộ thu này được khai báo trong tệp kê khai và hoạt động ngay cả khi ứng dụng bị đóng.
Dynamic Broadcast Receivers: Các loại bộ thu này chỉ hoạt động nếu ứng dụng đang hoạt động hoặc được thu nhỏ.
Các bài viết liên quan:
Vì từ API Cấp 26, hầu hết Broadcast receivers chỉ có thể được bắt bởi bộ thu động, vì vậy chúng tôi đã triển khai bộ thu động trong dự án mẫu của chúng tôi được đưa ra bên dưới. Có một số trường tĩnh được định nghĩa trong lớp Intent có thể được sử dụng để phát các sự kiện khác nhau. Chúng tôi đã thực hiện thay đổi chế độ trên máy bay làm sự kiện phát sóng, nhưng có nhiều sự kiện có thể sử dụng đăng ký chương trình phát sóng. Sau đây là một số ý định quan trọng được tạo ra trên toàn hệ thống:
- android.intent.action.BATTERY_LOW: Cho biết tình trạng pin yếu trên thiết bị.
- android.intent.action.BOOT_COMPLETE: Điều này được phát một lần sau khi hệ thống khởi động xong
- android.intent.action.CALL: Để thực hiện cuộc gọi đến một người nào đó được chỉ định bởi dữ liệu
- android.intent.action.DATE_CHANGED: Cho biết ngày đã thay đổi
- android.intent.action.REBOOT: Cho biết rằng thiết bị đã được khởi động lại
- android.net.conn.CONNECTIVITY_CHANGE: Mạng di động hoặc kết nối wifi bị thay đổi (hoặc đặt lại)
- android.intent.ACTION_AIRPLANE_MODE_CHANGED: Điều này cho biết rằng chế độ trên máy bay đã được bật hoặc tắt.
Hai bước chính mà chúng tôi phải làm để sử dụng broadcast receiver trong ứng dụng của chúng tôi là:
- Creating the Broadcast Receiver:
- Registering a BroadcastReceiver:
Cách hoạt động của Broadcast receivers
Cách hoạt động của Broadcast receivers trong Android như sau:
- Đăng ký Broadcast receivers: Trước khi có thể nhận thông báo (broadcast), Broadcast receivers cần được đăng ký với hệ thống thông qua Intent Filters. Intent Filters định nghĩa các tiêu chí để lọc các Broadcast phù hợp với Broadcast receivers. Đăng ký có thể được thực hiện thông qua tập tin AndroidManifest.xml hoặc trong mã nguồn của ứng dụng.
- Nhận thông báo: Khi Broadcast phù hợp được gửi đi, hệ thống sẽ kích hoạt Broadcast receivers tương ứng. Một khi Broadcast receivers được kích hoạt, hệ thống sẽ gọi phương thức
onReceive()
của Broadcast receivers đó. - Xử lý thông báo: Phương thức
onReceive()
chứa mã lệnh để xử lý thông báo nhận được. Trong phương thức này, bạn có thể thực hiện các tác vụ tùy ý, chẳng hạn như cập nhật giao diện người dùng, khởi chạy dịch vụ, ghi log, hoặc thực hiện các tác vụ nền. - Kết thúc xử lý: Sau khi phương thức
onReceive()
hoàn thành xử lý, Broadcast receivers kết thúc và hệ thống tiếp tục thực thi các tác vụ tiếp theo.
Broadcast receivers có thể được sử dụng để nhận và xử lý các loại Broadcast khác nhau, bao gồm các sự kiện hệ thống như kết nối mạng, nguồn pin yếu, hoặc thông báo từ hệ thống như tin nhắn, cuộc gọi đến. Bạn cũng có thể đăng ký Broadcast receivers để nhận thông báo từ các ứng dụng khác.
Qua cách hoạt động này, Broadcast receivers giúp ứng dụng Android phản ứng nhanh với các sự kiện hệ thống và ứng dụng khác mà không cần người dùng tương tác trực tiếp.
Xem thêm Tài liệu tự học android tốt nhất
Xử lý Broadcast receivers trong Android
Để xử lý Broadcast receivers trong Android, bạn cần thực hiện các bước sau:
- Tạo Broadcast receivers: Tạo một lớp (class) mở rộng từ lớp
BroadcastReceiver
và ghi đè phương thứconReceive()
. Trong phương thức này, bạn sẽ xử lý các thông báo nhận được.
public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // Xử lý thông báo nhận được } }
- Đăng ký Broadcast receivers: Có thể đăng ký Broadcast receivers trong tập tin AndroidManifest.xml hoặc trong mã nguồn của ứng dụng.
- Đăng ký trong AndroidManifest.xml:
<receiver android:name=".MyBroadcastReceiver"> <intent-filter> <action android:name="com.example.MY_ACTION" /> </intent-filter> </receiver>
- Đăng ký trong mã nguồn:
MyBroadcastReceiver myReceiver = new MyBroadcastReceiver(); IntentFilter intentFilter = new IntentFilter("com.example.MY_ACTION"); context.registerReceiver(myReceiver, intentFilter);
- Xử lý thông báo nhận được: Trong phương thức
onReceive()
của Broadcast receivers, bạn có thể thực hiện các tác vụ xử lý dữ liệu hoặc giao diện người dùng. - Hủy đăng ký Broadcast receivers (nếu cần thiết): Nếu bạn đã đăng ký Broadcast receivers trong mã nguồn, hãy nhớ hủy đăng ký khi không cần sử dụng nữa để tránh rò rỉ tài nguyên.
context.unregisterReceiver(myReceiver);
Qua quy trình trên, Broadcast receivers sẽ nhận các thông báo phù hợp và thực hiện xử lý tương ứng. Bạn có thể sử dụng Broadcast receivers để phản ứng với các sự kiện hệ thống hoặc thông báo từ các ứng dụng khác, từ đó thực hiện các tác vụ phù hợp trong ứng dụng của bạn.
Các tình huống sử dụng Broadcast receivers
Broadcast receivers trong Android có thể được sử dụng trong nhiều tình huống khác nhau. Dưới đây là một số tình huống phổ biến mà bạn có thể sử dụng Broadcast receivers:
- Nhận thông báo từ hệ thống: Bạn có thể sử dụng Broadcast receivers để nhận các thông báo hệ thống như khởi động lại thiết bị, kết nối mạng thay đổi, sạc pin kết thúc, v.v.
- Nhận thông báo từ ứng dụng khác: Bạn có thể đăng ký Broadcast receivers để nhận thông báo từ các ứng dụng khác trong hệ thống Android. Ví dụ: nhận thông báo khi nhận tin nhắn, cuộc gọi, email mới, v.v.
- Xử lý sự kiện giao diện người dùng: Broadcast receivers có thể được sử dụng để xử lý các sự kiện giao diện người dùng như nhấn nút, thay đổi trạng thái màn hình, v.v.
- Đồng bộ dữ liệu: Broadcast receivers có thể được sử dụng để đồng bộ dữ liệu giữa các thành phần trong ứng dụng hoặc giữa ứng dụng và máy chủ từ xa.
- Nhận thông báo từ các tác vụ nền: Broadcast receivers có thể được sử dụng để nhận thông báo từ các tác vụ nền như tải xuống tệp, xử lý dữ liệu, đồng bộ hóa, v.v.
- Thực hiện các tác vụ định lịch: Bạn có thể sử dụng Broadcast receivers để thực hiện các tác vụ định lịch, chẳng hạn như thông báo hàng ngày, gửi email tự động, cập nhật dữ liệu, v.v.
- Tương tác với phần cứng: Broadcast receivers có thể được sử dụng để tương tác với các sự kiện phần cứng như nút bấm, cảm biến, máy ảnh, v.v.
Đây chỉ là một số tình huống phổ biến mà bạn có thể sử dụng Broadcast receivers trong Android. Tùy thuộc vào yêu cầu và mục đích của ứng dụng, bạn có thể tùy chỉnh và sử dụng Broadcast receivers cho các tình huống cụ thể khác.
Lợi ích và ứng dụng của Broadcast receivers
Broadcast receivers trong Android mang lại nhiều lợi ích và có nhiều ứng dụng quan trọng. Dưới đây là một số lợi ích và ứng dụng chính của Broadcast receivers:
- Tương tác giữa các thành phần trong ứng dụng: Broadcast receivers cho phép các thành phần trong ứng dụng (như Activity, Service) giao tiếp và truyền thông tin với nhau thông qua các thông điệp broadcast. Điều này giúp tạo sự kết nối linh hoạt giữa các thành phần và cho phép chúng hoạt động độc lập.
- Nhận thông báo hệ thống và sự kiện hệ thống: Broadcast receivers cho phép ứng dụng nhận các thông báo và sự kiện quan trọng từ hệ thống Android như khởi động lại, kết nối mạng, pin yếu, cắm sạc, v.v. Điều này giúp ứng dụng phản ứng và thực hiện các hành động phù hợp dựa trên trạng thái hệ thống.
- Tương tác với ứng dụng khác: Broadcast receivers cho phép ứng dụng giao tiếp với các ứng dụng khác trong hệ thống Android. Điều này mở ra nhiều khả năng như nhận thông báo từ ứng dụng khác, chia sẻ dữ liệu, tương tác qua các intent, v.v.
- Xử lý sự kiện giao diện người dùng: Broadcast receivers có thể được sử dụng để xử lý các sự kiện giao diện người dùng như nhấn nút, thay đổi trạng thái màn hình, v.v. Điều này giúp tạo ra các tương tác người dùng linh hoạt và đáp ứng nhanh chóng.
- Đồng bộ dữ liệu và cập nhật: Broadcast receivers có thể được sử dụng để đồng bộ dữ liệu giữa các thành phần trong ứng dụng hoặc giữa ứng dụng và máy chủ từ xa. Điều này giúp đảm bảo dữ liệu luôn được cập nhật và đồng bộ theo thời gian thực.
- Tương tác với phần cứng: Broadcast receivers có thể được sử dụng để tương tác với các sự kiện phần cứng như nút bấm, cảm biến, máy ảnh, v.v. Điều này giúp ứng dụng tương tác trực tiếp với phần cứng và mở rộng khả năng sử dụng.
Các ứng dụng của Broadcast receivers là rất đa dạng và phong phú trong phát triển ứng dụng Android. Chúng cung cấp khả năng tương tác linh hoạt giữa các thành phần, giúp ứng dụng đáp ứng và phản hồi tốt với sự kiện hệ thống và giao diện người dùng, cũng như mở rộng tính năng và tương tác với các ứng dụng khác trong hệ thống Android.
Ví dụ về Broadcast receivers
Dưới đây là dự án mẫu trình bày cách tạo Broadcast receivers và cách đăng ký chúng cho một sự kiện cụ thể và cách sử dụng chúng trong ứng dụng.
Bước 1: Tạo một project mới
Để tạo một dự án mới trong Android Studio, vui lòng tham khảo Cách tạo / Bắt đầu một dự án mới trong Android Studio.
Bước 2: Chỉnh sửa activity_main.xml
Đi tới tệp activity_main.xml và tham khảo đoạn mã sau. Dưới đây là mã cho tệp activity_main.xml.
Bước 3: Làm việc với tệp MainActivity.java
Đi tới tệp MainActivity và tham khảo đoạn mã sau. Dưới đây là mã cho tệp MainActivity. Nhận xét được thêm vào bên trong mã để hiểu mã chi tiết hơn.
Bước 4: Tạo một Class mới
Đi tới app > java >package > right-click > New > java File/Class và đặt tên các tệp là AirplaneModeChangeReceiver. Dưới đây là mã cho tệp AirplaneModeChangeReceiver. Nhận xét được thêm vào bên trong mã để hiểu mã chi tiết hơn.
Và kết quả: khi chúng ta active chế độ airplane sẽ nhận được Toast như sau