-
Title:
-
Description:
-
Giờ ta đã có một service đơn giản.
-
Nó có dễ không?
-
Nhưng nó vẫn chưa tự đánh thức được nó.
-
May mắn là, có một system service để làm điều này.
-
Đây là cơ hội tốt để giới thiệu Alarm manager.
-
Alarm manager cho phép bạn nói với system là bạn muốn nó
-
đánh thức một phần của app bạn sau một khoảng thời gian
-
và làm vài thứ linh tinh trong background.
-
Bạn có thể dùng nó để đánh thức app của bạn một cách định kỳ,
-
nhưng điều gì đánh thức chúng ta ở trong background?
-
Đó là một Android component mà ta chưa từng thấy trước đây,
-
gọi là một broadcast receiver.
-
Một broadcast receiver là một class đặc biệt dùng để
-
nhận intent broadcasts, thường xuyên từ apps khác.
-
Thông thường, một broadcast receiver sẽ đăng ký một intent filter
-
cho những broadcasts này.
-
Nó cũng là một cách để app sẽ lắng nghe báo thức.
-
Alarms sẽ lợi dụng một loại mới của intent, gọi là PendingIntent.
-
Một PendingIntent là một loại đặc biệt của intent
-
mà nó được giao từ ứng dụng này tới ứng dụng khác.
-
Sự khác biệt lớn nhất giữa một PendingIntent và một intent bình thường
-
là PendingIntent trao quyền cho app dùng nó để gửi data
-
với cùng permission và app identify như ứng dụng mà tạo ra nó.
-
Trong Android điều này cho phép hệ system process gọi app của bạn quay lại
-
theo một cách không đồng bộ mà không ảnh hưởng tới mô hành bảo mật của Android.
-
Trong alarms một pendingIntent được dùng bởi Alarm manager
-
để nói với broadcast recẻiver mà ta tạo.
-
Hãy thêm vài cái alarm.
-
Đầu tiên, ta sẽ thêm một BroadcastReceiver như một static inner class
-
của SunshineService.
-
Vì đây là một Android component,
-
Tôi sẽ đăng ký broadcast receiver này trong manifest.
-
Chú ý cách một static inner class được ký hiệu.
-
Okay.
-
Tôi đã đưa bạn bộ xương của một broadcast receiver mà có thể xử lý một alarm.
-
Và giờ là lượt của bạn.
-
Bạn có thể tạo một PendingIntent từ một explixit intent
-
để có alarm manager khởi động broadcast receiver của bạn.
-
Tôi khuyên bạn nên đặt alram báo động trong khoảng thời gian ngắn
-
như 5 giây, để bạn có thể dễ dàng test nó có hoạt động không.