LẬP TRÌNH ANDROID NÂNG CAO Bài 1: Service

35 244 0
LẬP TRÌNH ANDROID NÂNG CAO	Bài 1: Service

Đ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

LẬP TRÌNH ANDROID NÂ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 Service Service  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 Service Service 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

Ngày đăng: 27/02/2019, 17:28

Mục lục

    LẬP TRÌNH ANDROID NÂNG CAO

Tài liệu cùng người dùng

Tài liệu liên quan