Services trong Android

0

Một dịch vụ là một thành phần chạy dưới nền để thực hiện các hoạt động lâu dài mà không cần tương tác với người dùng và nó hoạt động ngay cả khi ứng dụng bị hủy. Một dịch vụ cơ bản có thể có hai trạng thái –

STT Trang thái và mô tả
1 Started

Một dịch vụ được started khi một thành phần của ứng dụng, chẳng hạn như một activity, bắt đầu nó bằng cách gọi startService(). Một khi bắt đầu, một dịch vụ có thể chạy trong nền vô thời hạn, ngay cả khi thành phần bắt đầu nó bị phá hủy.

2 Bound

Một dịch vụ là bound khi một thành phần ứng dụng liên kết với nó bằng cách gọi bindService(). Một dịch vụ ràng buộc cung cấp giao diện client-server cho phép các thành phần tương tác với dịch vụ, gửi yêu cầu, có được kết quả, và thậm chí làm như vậy qua các quá trình với interprocess communication (IPC).

Một dịch vụ có các phương thức gọi lại chu kỳ mà bạn có thể thực hiện để giám sát các thay đổi trong trạng thái của dịch vụ và bạn có thể thực hiện công việc ở giai đoạn thích hợp. Biểu đồ dưới đây cho thấy chu kì  khi dịch vụ được tạo với startService () và biểu đồ bên phải cho thấy chu kỳ khi dịch vụ được tạo bằng bindService (): (hình ảnh tham khảo: android.com)

Để tạo một dịch vụ, bạn tạo một lớp Java thừa kế lớp cơ sở Service hoặc một lớp con hiện có của nó. Lớp cơ sở Service xác định các phương thức gọi lại khác nhau và quan trọng nhất được đưa ra dưới đây. Bạn không cần thực hiện tất cả các phương pháp gọi lại. Tuy nhiên, điều quan trọng là bạn phải hiểu từng chiến dịch và thực hiện những điều đảm bảo ứng dụng của bạn hoạt động theo cách mà người dùng mong đợi.

STT Gọi lại và mô tả
1 onStartCommand()

Hệ thống gọi phương pháp này khi một thành phần khác, chẳng hạn như một activity, yêu cầu bắt đầu dịch vụ, bằng cách gọi startService(). Nếu bạn thực hiện phương thức này, bạn có trách nhiệm ngừng dịch vụ khi công việc đã thực hiện bằng cách gọi phương thức stopSelf() hoặc stopService().

2 onBind()

Hệ thống gọi phương thức này khi một thành phần khác muốn liên kết với dịch vụ bằng cách gọi hàm bindService(). Nếu bạn thực hiện phương pháp này, bạn phải cung cấp một giao diện cho khách hàng sử dụng để giao tiếp với dịch vụ, bằng cách trả lại một đối tượng IBinder. Bạn phải luôn luôn thực hiện phương thức này, nhưng nếu bạn không muốn cho phép ràng buộc, bạn nên trả về null.

3 onUnbind()

Hệ thống gọi phương pháp này khi tất cả các máy khách đã ngắt kết nối từ một giao diện cụ thể do dịch vụ xuất bản.

4 onRebind()

Hệ thống gọi phương pháp này khi khách hàng mới kết nối với dịch vụ, sau khi nó đã được thông báo rằng tất cả đã bị ngắt kết nối trong onUnbind của nó (Intent).

5 onCreate()

Hệ thống gọi phương pháp này khi dịch vụ được tạo ra lần đầu tiên bằng cách sử dụng onStartCommand() hoặc onBind(). Cuộc gọi này được yêu cầu để thực hiện một lần cài đặt.

6 onDestroy()

Hệ thống gọi phương pháp này khi dịch vụ không còn sử dụng nữa và đang bị phá hủy. Dịch vụ của bạn nên thực hiện việc này để xóa bất kỳ tài nguyên nào như threads, registered listeners, receivers, vv

Dịch vụ  dưới đây thể hiện từng phương thức trong một chu kỳ –

Ví dụ

Ví dụ này sẽ đưa bạn qua các bước đơn giản để tạo dịch vụ Android của riêng bạn. Thực hiện theo các bước sau để sửa đổi ứng dụng Android mà chúng tôi đã tạo trong ví dụ Hello World –

Bước Mô tả
1 Bạn sẽ sử dụng Android StudioIDE để tạo một ứng dụng Android và đặt tên nó là My Application dưới một gói com.example.tutorialspoint7.myapplication như được giải thích trong chương trình Hello World Example.
2 Chỉnh sửa main activity file MainActivity.java để gọi phương thức startService() and stopService().
3 Tạo một file java mới MyService.java bên trong gói com.example.My Application. Tệp này sẽ thực hiện các phương thức liên quan đến dịch vụ Android.
4 Định nghĩa service của bạn trong file AndroidManifest.xml sử dụng tag <service…/> . Một ứng dụng có thể có một hoặc nhiều dịch vụ mà không bị hạn chế.
5 Chỉnh sửa nội dung mặc định của file res/layout/activity_main.xml để khai báo 2 buttons trong linear layout.
6 Không cần thay đổi bất kỳ hằng số nào trong file res/values/strings.xml.
7 Chạy ứng dụng để khởi chạy bộ giả lập Android và xác minh kết quả của những thay đổi được thực hiện trong ứng dụng.

Sau đây là nội dung của tệp main activity MainActivity.java. Tập tin này có thể bao gồm các phương thức trong một chu kỳ cơ bản. Chúng tôi đã thêm các phương thức startService()stopService() để bắt đầu và ngừng dịch vụ.

Sau đây là nội dung của MyService.java. Tệp này có thể thực hiện một hoặc nhiều phương thức liên quan đến Service dựa trên yêu cầu. Bây giờ chúng ta sẽ thực hiện hai phương pháp onStartCommand()onDestroy()

Sau đây nội dung sửa đổi của file AndroidManifest.xml. Ở đây chúng tôi đã add tag <service…/> để khai báo service của chúng tôi −

Sau đây là nội dung của file res/layout/activity_main.xml  để khai báo 2 buttons −

Hãy thử chạy Hello World của chúng tôi đã sửa đổi! Tôi cho rằng bạn đã tạo ra AVD của bạn trong khi thiết lập môi trường. Để chạy ứng dụng từ Android studio, hãy mở một trong các tệp activity của dự án và nhấp vào Icon Run Android StudioRun từ thanh công cụ. Android Studio cài đặt ứng dụng trên AVD của bạn và bắt đầu ứng dụng đó và nếu mọi thứ đều ổn với thiết lập và ứng dụng của bạn, nó sẽ hiển thị cửa sổ Emulator sau –

Android Service Demo

Bây giờ để bắt đầu dịch vụ của bạn, kích nút Start Service, nó sẽ bắt đầu dịch vụ  theo phương thức onStartCommand() của chúng tôi, một thông báo Service Started sẽ xuất hiện ở dưới cùng của trình mô phỏng như sau –

Android Service Start

Để dừng dịch vụ, bạn có thể nhấp vào nút Stop Service.

Chúc bạn thành công!

LEAVE A REPLY