1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình Android TV part 4 docx

16 307 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 175,48 KB

Nội dung

BroadcastReceiver MultiUni Trần Vũ Tất Bình Tổng quan • BroadcastReceiver (có thể gọi Receiver bốn loại thành phần ứng dụng Android Chức dùng để nhận kiện mà ứng dụng hệ thống phát • Có cách phát-nhận là: – Khơng có thứ tự: receiver đủ điều kiện nhận hết, khơng phân biệt tách rời – Có thứ tự: receiver đăng ký ưu tiên nhận trước, truyền thêm thơng tin xử lý cho receiver sau Lifecycle • Thực lifecycle BroadcastReceiver có phương thức onReceive() – Khi có kiện mà BroadcastReceiver đăng ký nhận phát đi, phương thức onReceive() BroadcastReceiver gọi – Sau thực thi xong phương thức này, lifercycle Receiver kết thúc Lưu ý sử dụng • Ngay onReceive() kết thúc, hệ thống coi receiver khơng cịn hoạt động kill process chứa receiver lúc Tránh xử lý code lâu onReceive()  Khơng có xử lý bất đồng bộ, chờ callback… Receiver (cụ thể hiển thị Dialog, kết nối service…) Một số broadcast thơng dụng • • • • • Báo hệ thống khởi động xong Báo pin có thay đổi Báo có package cài vào xóa Báo tắt máy Báo cắm sạc, rút sạc… Xem thêm đây, mục Standard Broadcast Actions Một số broadcast khác • • • • Thơng báo tin nhắn tới Thông báo cắm, rút thẻ nhớ Thơng báo có gọi Và bạn định nghĩa broadcast cho riêng (mục tiêu việc giúp bạn liên lạc ứng dụng bạn viết thông báo kiện liên quan đến ứng dụng bạn với ứng dụng khác) onReceive() • Phương thức gọi có kiện tương ứng phát Ở phương thức này, ta thấy truyền vào context intent – Vì Receiver khơng kế thừa từ Context nên cần truyền context mà receiver chạy vào Thứ nhất, để xử lý phương thức yêu cầu truyền thêm Context, thứ 2, để sử dụng phương thức lớp Context (cịn hay khơng bạn giúp ln nhé) onReceive() – Intent truyền vào có đầy đủ thơng tin kiện mà receiver đăng ký xảy dẫn đến onReceive() gọi Có gửi kèm thơng tin liệu hay khơng Xem api: Intent.getAction() Intent.get…Extra(String dataName) Ví dụ BootReceiver • Các bạn đăng ký nhận kiện hệ thống vừa khởi động xong để làm việc ngay, vận hành song song với hệ thống… • Ta đăng ký nhận kiện BOOT_COMPLETED, sau gọi dialog lên hiển thi lời chào • Khi hệ thống khởi động xong xuất dialog chào user  Ví dụ BootReceiver • Trong manifest, cần đăng ký permission nhận kiện • Khai báo receiver bên thẻ application Ví dụ BootReceiver • Ở ta khai báo manifest ứng dụng có receiver tên BootReceiver (slide kế thấy) • BootReceiver đăng ký nhận kiện “hệ thổng khởi động hồn tất” • Dĩ nhiên, muốn nhận sựu kiện dạng cần phải đăng kí trước để với hệ thống qua permission để user biết Ví dụ BootReceiver • Tạo class source, tên BootReceiver kế thừa BroadcastReceiver • Implement lại phương thức onReceive() với code sau: if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Intent helloIntent = new Intent(context, HelloBootActivity.class); helloIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(helloIntent); } Ví dụ BootReceiver • Giải thích chút: Receiver khơng kế thừa context nên tạo intent không truyền this vô được, thay vào truyền context gửi kèm • Vì khơng activity mà receiver, số vấn đề liên quan tới task Android nên bạn phải thêm cờ Intent.FLAG_ACTIVITY_NEW_TASK (bạn ko dùng cờ bạn gọi startActivity() từ activity) Ví dụ BootReceiver • Đọc tới bạn hiểu ứng dụng có activity tên HelloBootActivity, activity hiển thị dạng dialog, không start cách bấm vào icon hình Vì thế, khai báo manifest sau: • Còn activity hiển thị TextView “Chào bạn, khởi động xong” Button để bấm vào đóng activity, bạn hồn tất Phát kiện • Các bạn phát kiện cho receiver khác nhận dạng sau: Intent intent = new Intent("org.multiuni.android.BROADCAST_DEMO"); sendBroadcast(intent); • Hoặc: sendOrderedBroadcast(intent, "permission tùy ý null"); • Ngồi cịn có số gửi broadcast khác, bạn tham khảo thêm class ContextWrapper Bài tập yêu cầu Làm ứng dụn BootReceiver vừa Lên g-android, tìm code mẫu chuyển hướng gọi, làm (cũng receiver) Viết ứng dụng, ứng dụng A nhập vào chuỗi phát kiện tự định nghĩa, kèm theo chuỗi Ứng dụng B nhận kiện hiển thị Toast có nội dung chuỗi nhận ... • Khai báo receiver bên thẻ application ... thế, khai báo manifest sau: • Cịn activity hiển thị TextView “Chào bạn, khởi động xong” Button... được, thay vào truyền context gửi kèm • Vì khơng activity mà receiver, số vấn đề liên quan tới task Android nên bạn phải thêm cờ Intent.FLAG_ACTIVITY_NEW_TASK (bạn ko dùng cờ bạn gọi startActivity()

Ngày đăng: 02/07/2014, 12:20

TỪ KHÓA LIÊN QUAN