Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
630,1 KB
Nội dung
LẬPTRÌNHANDROIDNÂNG CAO Bài 1:Service Nội dung học Tổng quan Service Quản lý vòng đời Service Tạo Service Dừng ServiceService Service thành phần ứng dụng thực thao tác đòi hỏi tốn nhiều thời gian tài nguyên Service không cung cấp giao diện cho người dùng Service chạy ngầm để thực công việc nghe nhạc, thực ghi đọc file, tương tác với Content Provider Vòng đời Service Vòng đời Service đơn giản vòng đời Activity Điều quan trọng bạn phải quan tâm đến Service tạo hủy nào, Service chạy mà người dùng không ý thức Service chạy Vòng đời Service từ tạo đến bị hủy chia làm loại: Unbound Service (Started Service): service không ràng buộc Bound Service: service ràng buộc Vòng đời Service Started Service Service khởi tạo (Started Service) service khởi tạo thành phần ứng dụng (ví dụ Activity) khởi tạo Service lời gọi phương thức startService() Ngay khởi tạo xong, Service chạy vơ hạn kể thành phần khởi tạo Service (ví dụ Activity khởi tạo Service này) bị hủy Thông thường, Service khởi tạo thực thao tác đơn giản khơng trả lại kết cụ thể Ví dụ: download upload file mạng Khi Service hoàn thành nhiệm vụ việc download upload, Service tự động dừng lại Bound Service Service ràng buộc (bound service) thành phần ứng dụng ràng buộc Service lời gọi bindService() Service ràng buộc có giao diện client-server cho phép thành phần ứng dụng tương tác với Service, gửi yêu cầu, nhận kết Một Service ràng buộc chạy thành phần ứng dụng ràng buộc với Service Nhiều thành phần ràng buộc Service, tất thành phần không ràng buộc Service nữa, Service bị hủy Bound Service Một Service hoạt động theo cách: vừa khởi tạo (chạy vô hạn) vừa cho phép ràng buộc (binding) Khi đó, bạn cần miêu tả phương thức onStartCommand() cho phép thành phần khởi tạo onBind() cho phép ràng buộc Dù ứng dụng bạn có khởi tạo, ràng buộc vừa khởi tạo ràng buộc, thành phần ứng dụng sử dụng Service (thậm chí từ ứng dụng khác) giống cách mà thành phần sử dụng acvitity cách khởi tạo sử dụng Intent Tuy nhiên bạn khai báo Service private file AndroidManifest.xml (khai báo android:exported="false“ cho Service AndroidManifest) Đăng ký Service AndroidManifest.xml Bước 1: Mở file AndroidManifest.xml chọn “Application” tab Bước 2: Click nút Add mục Application Node Đăng ký Service AndroidManifest.xml Bước 3: Chọn “Service” nhấn nút “OK” ServiceConnection Interface cho phép giám sát trạng thái service ứng dụng Giống callback hệ thống, phương thức lớp gọi từ main thread tiến trình (process) bạn Bao gồm phương thức: onServiceConnected() (ComponentName name, IBinder service): gọi kết nối tới Serevice thiết lập onServiceDisConnected (ComponentName name): gọi kết nối tới Service bị liên lạc onCreate Phương thức gọi hệ thống Service tạo lần Không gọi Service chạy Gọi trước onStartCommand() onBind() Chú ý không gọi phương thức trực tiếp onDestroy Phương thức gọi hệ thống Service khơng sử dụng Service bị hủy Bạn nên giải phóng tài nguyên thread, listener, receiver phương thức Sau lời gọi phương thức này, thêm lời gọi tới ServiceService thực khơng tồn Chú ý không gọi phương thức trực tiếp Dừng Service Có phương thức để dừng Service sau: stopService(Intent service): yêu cầu dừng Service ứng dụng cụ thể Lời gọi dừng Service cho dù service khởi tạo lần Tham số truyền vào miêu tả Service muốn dừng stopSelf(): dừng Service khởi tạo trước Tương tự phương thức stopService() cho Service cụ thể stopSelf(int startId): version cũ stopSelfResult (int startId), startId start identifier gần nhận lời gọi onStart(Intent, int) Code ví dụ Intent Service Kế thừa Service Tự động sinh worker thread Sinh work queue để tránh xử lý nhiều công việc main thread ứng dụng onBind() mặc định trả lại null onStartCommand() mặc định gọi onHandlerIntent() Để sử dụng Intent Service, kế thừa Intent Service miêu tả onHandlerIntent(intent) Intent Service nhận Intent, khởi tạo worker thread dừng service yêu cầu Service thực xong Code ví dụ O DEM Sử dụng Intent Service Gửi thông báo đến người dùng Thông thường gửi thông báo đến người dùng Service thực xong công việc Có hai loại thơng báo chính: Toast notification: message xuất cửa sổ ứng dụng Status Bar notification: cung cấp icon trạng thái (status bar) với thơng điệp, người dùng đưa hành động (ví dụ khởi tạo Acvitity) Status bar notification kỹ thuật tốt công việc chạy kết thúc (như kết thúc tải file người dùng thao tác file đó) Khi người dùng chọn notification từ view mở rộng, notification khởi tạo Activity (ví dụ view file download) Gửi thông báo đến người dùng Toast notification Status Bar notification Foreground Service Là Service mà người dùng biết Service chạy hệ thống không kill Service nhớ xuống thấp Phải cung cấp notification status bar thể Service chạy trừ Service bị dừng bị hủy từ foreground Ví dụ: music player sử dụng service để chơi nhạc nên service nên để chế độ chạy foreground người dùng biết nhạc nghe Notification status bar nên miêu tả nhạc nghe cho phép người dùng khởi tạo Activity để tương tác với music player Background Service Là Service chạy mà người dùng không ý thức Service chạy khơng có tương tác với người dùng Ví dụ: nhận tin nhắn, nhận gọi đến, nhận email,… Ví dụ: tạo báo thức lúc 5:56am, đồng hồ hệ thống điểm 5:56am, thiết bị thông báo báo thức cho người dùng âm notification So sánh Service Activity Service khơng có giao diện Service khơng bị kill thiết bị bị xoay Service: phân cấp độ quan trọng bị kill (kill priority) O DEM Thông báo Toast cho người dùng Service hồn thành cơng việc Tổng kết nội dung học Tổng quan Service Quản lý vòng đời Service Tạo Service Dừng Service ... ràng buộc Bound Service: service ràng buộc Vòng đời Service Started Service Service khởi tạo (Started Service) service khởi tạo thành phần ứng dụng (ví dụ Activity) khởi tạo Service lời gọi... Khi Service hoàn thành nhiệm vụ việc download upload, Service tự động dừng lại Bound Service Service ràng buộc (bound service) thành phần ứng dụng ràng buộc Service lời gọi bindService() Service. .. cho Service AndroidManifest) Đăng ký Service AndroidManifest.xml Bước 1: Mở file AndroidManifest.xml chọn “Application” tab Bước 2: Click nút Add mục Application Node Đăng ký Service AndroidManifest.xml