Việc đầu tiên đáng chú ý trong lớp học "WeatherAlertService" là một thực tế là nó kéo dài "Dịch vụ". Đây là phương pháp tương tự, chúng tôi đã thấy với hoạt động và thu: mở rộng lớp cơ sở, thực hiện các phương pháp trừu tượng, và thay thế các phương pháp vòng đời khi cần thiết.
sau khi tuyên bố ban đầu của một loạt các thành viên biến được xác định. Người đầu tiên hai là hằng số đại diện cho khoảng thời gian để bỏ phiếu cho thời tiết khắc nghiệt và một khoảng thời gian yên tĩnh. Đây là quan trọng bởi vì chúng tôi đã thiết lập một ngưỡng rất thấp cho phiếu dur-ing thời tiết khắc nghiệt phát triển thông báo sẽ spam bộ mô phỏng thường do cài đặt này. Sản xuất này sẽ được throttled quay lại một lần mỗi 6 hoặc 12 giờ hoặc như.
Tiếp theo là một biến "Timertask" mà chúng tôi sẽ sử dụng để làm phòng phiếu và nhận được tất cả các vị trí đã lưu của người dùng đã cảnh báo được kích hoạt, thông qua một cơ sở dữ liệu cuộc gọi. Chúng tôi sẽ tìm hiểu chi tiết cụ thể của việc sử dụng cơ sở dữ liệu trong Android trong chương kế tiếp, nơi chúng tôi sẽ kết thúc trong các ứng dụng WeatherReporter và tập trung vào dữ liệu; ở đây chúng tôi sẽ ở lại theo dõi chúng tôi thảo luận "Dịch vụ".
Khi chúng tôi có các vị trí đã lưu, chúng tôi phân tích mỗi và tải các báo cáo thời tiết. Nếu báo cáo cho thấy thời tiết khắc nghiệt trong dự báo, chúng tôi cập nhật khi các lĩnh vực thông báo cuối cùng và gọi một phương pháp helper để bắt đầu một "thông báo" đang được gửi. Sau khi chúng tôi pto-cess người sử dụng của lưu vị trí, chúng tôi nhận được vị trí của thiết bị cảnh báo từ cơ sở dữ liệu bằng cách sử dụng một chỉ định mã bưu chính đặc biệt. Quá trình bỏ phiếu và gửi cảnh báo lặp đi lặp lại cho vị trí hiện tại của thiết bị-như trái ngược với lưu vị trí cụ thể-nếu người sử dụng có tính năng này được kích hoạt. Vị trí thiết bị chính nó là một "LocationMan-ager". Chúng tôi đã bỏ qua thiết bị liên quan đến vị trí tiện nghi được bao gồm trong chương 11.
sau khi chúng tôi "Timertask" được thiết lập, chúng tôi có một biến thành viên "Xử lý". Biến này sẽ được sử dụng sau này, sử dụng kỹ thuật tương tự như trong danh sách trước, để nhận được một đối tượng "Thông điệp" là bắn từ một chủ đề liên quan không-giao diện người dùng đến và sau đó phản ứng. Trong trường hợp này, khi nhận được thư, chúng tôi gọi một phương pháp helper instantiates và hiển thị một "thông báo".
ngoài của chúng tôi biến thành viên chúng tôi đi đến "Dịch vụ vòng đời" các phương pháp mà chúng tôi đã ghi đè, bắt đầu với "onCreate". Trong phương pháp này, chúng tôi thiết lập đối tượng trợ giúp cơ sở dữ liệu của chúng tôi và một "NotificationManager". Một lần nữa, chúng tôi sẽ bao gồm các dữ liệu trong chương kế tiếp. (Cảnh báo và thông báo chi tiết cụ thể được gửi trong chương 8). Sau khi "onCreate" chúng tôi thấy "onDestroy', đó là nơi chúng tôi làm sạch kết nối cơ sở dữ liệu của chúng tôi. "Dịch vụ" lớp học-es có những phương pháp vòng đời, do đó, chúng tôi có thể kiểm soát như thế nào tài nguyên được phân bổ và có cự ly hợp đồng, tương tự với các lớp "Acivity". trong phần 4.4.5 chúng tôi sẽ giải quyết điều này thêm chiều sâu.
sau khi các phương pháp liên quan đến vòng đời, chúng tôi thực hiện các phương pháp yêu cầu "onBind". Phương pháp này cản một IBinder"", đó là nói chung những gì các thành phần khác gọi vào "Dịch vụ" phương pháp sử dụng để giao tiếp. "Dịch vụ" lớp học, khi chúng tôi thảo luận trong sec-tion 4.3.1, có thể phục vụ hai mục đích: đầu tiên để chạy tiến trình nền và thứ hai cho các ràng buộc để cho phép IPC. Chúng tôi cảnh báo thời tiết "Dịch vụ" chỉ thực hiện một công việc nền, không cho phép "IBinder/Biner"-dựa IPC. Do đó, lớp này trở về một "không" cho "onBind". Chúng tôi sẽ nghiên cứu kỹ các ràng buộc và IPC asect của một "Dịch vụ" trong setion 4.4.
tiếp theo chúng ta thấy các iplemmentations phương pháp loại trợ giúp riêng của chúng tôi. Lần đầu tiên chúng tôi có "loadRecord", đó là nơi mà chúng tôi gọi các API Weather Yahoo! thông qua "YWeather-trình tải". (Làm thế nào điều này làm việc trong điều kiện của mạng chi tiết cụ thể sẽ được bao gồm trong
đang được dịch, vui lòng đợi..