Lập trình Android, Series lập trình Android cơ bản

Bài 5: Service trong Android (Lập trình Android cơ bản)

Lập trình android cơ bản

Service là gì? Các loại service trong android

Service là một thành phần chạy trong background để xử lý những hoạt động lâu dài mà không cần sự tương tác với người dùng và nó làm việc kể cả khi ứng dụng bị phá huỷ. Một service về cơ bản có 2 trạng thái dưới đây:

Trạng thái và mô tả
1Started
Một service là started khi một thành phần ứng dụng, như là activity, bắt đầu nó bằng cách gọi startService(). Một khi started, service có thể chạy vô thời hạn trong background, ngay cả khi thành phần bắt đầu nó bị phá huỷ.
2Bound
Một service 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 bound service cung cấp một giao diện client-server để cho phép các thành phần tương tác với service, gửi những yêu cầu, nhận những kết quả và thậm chí làm vậy ngang qua các tiến trình với interprocess communication (IPC).

Một service có các callback methods như là vòng đời của nó. Bạn có thể triển khai những callback methods này để theo dõi những thay đổi trong trạng thái của service và bạn có thể thực thi những công việc tại những giai đoạn thích hợp. Theo dõi sơ đồ dưới đây, sơ đồ bên trái biểu diễn vòng đời của service ở trạng thái created khi được bắt đầu với startService() và sơ đồ bên phải biểu diễn vòng đời của service ở trạng thái bound khi được bắt đầu với bindService():

Các phương thức Callbacks trong một Service

Để tạo một service, bạn tạo một lớp java được kế thừa từ lớp cơ bản của service hoặc một trong những lớp con đang tồn tại của nó. Lớp cơ sở của service định nghĩa những callback methods khác nhau và các phương thức quan trọng nhất được liệt kê dưới đây. Bạn không cần phải triển khai toàn bộ các callbacks methods. Tuy nhiên, việc bạn hiểu mỗi callback và triển khai chúng để đảm bảo ứng dụng vận hành tốt theo cách người dùng mong đợi là rất quan trọng.

Callback và mô tả
1onStartCommand()
Hệ thống gọi phương thức này khi thành phần khác như một activity yêu cầu một service được bắt đầu, bằng cách gọi startService(). Nếu bạn triển khai phương thức này, trách nhiệm của bạn là dừng service khi công việc của đã hoàn thành bằng cách gọi phương thức stopSelf() hoặc stopService().
2onBind()
Hệ thống gọi phương thức này khi một thành phần khác muốn tró buộc với service bằng cách gọi bindService(). Nếu bạn triển khai phương thức này, bạn cần cung cấp một giao diện để clients sử dụng để giao tiếp với service, bằng cách trả về một đối tượng IBinder. Bạn phải luôn triển khai phương thức này, nhưng nếu bạn không muốn cho phép trói buộc thì bạn nên trả về null.
3onUnbind()
Hệ thống gọi phương thức này khi tất cả clients đã ngắt kết nối từ một giao diện củ thể được phát hành bởi service.
4onRebind()
Hệ thống gọi phương thức này khi clients mới đã kết nối với service, sau khi nó đã được nhận thông báo trước đó là tất cả clients đã ngắt kết nối trong onUnbind().
5onCreate()
Hệ thống gọi phương pháp này khi service lần đầu tiên được tạo sử dụng onStartCommand() hoặc onBind(). Cuộc gọi này được thực hiện thiết lập một lần.
6onDestroy()
The system calls this method when service lâu không được sử dụng và nó đang bị phá huỷ. Service của bạn nên triển khai nó để dọn dẹp tất cả những tài nguyên như theads, những listeners được khai báo, receivers,…

Ví dụ dưới đây mô tả vòng đời của mỗi phương thức trong service:

package net.techchicken;

import android.app.Service;
import android.os.IBinder;
import android.content.Intent;
import android.os.Bundle;

public class HelloService extends Service {
   
   /** indicates how to behave if the service is killed */
   int mStartMode;
   
   /** interface for clients that bind */
   IBinder mBinder;     
   
   /** indicates whether onRebind should be used */
   boolean mAllowRebind;

   /** Called when the service is being created. */
   @Override
   public void onCreate() {
     
   }

   /** The service is starting, due to a call to startService() */
   @Override
   public int onStartCommand(Intent intent, int flags, int startId) {
      return mStartMode;
   }

   /** A client is binding to the service with bindService() */
   @Override
   public IBinder onBind(Intent intent) {
      return mBinder;
   }

   /** Called when all clients have unbound with unbindService() */
   @Override
   public boolean onUnbind(Intent intent) {
      return mAllowRebind;
   }

   /** Called when a client is binding to the service with bindService()*/
   @Override
   public void onRebind(Intent intent) {

   }

   /** Called when The service is no longer used and is being destroyed */
   @Override
   public void onDestroy() {

   }
}
Được gắn thẻ ,

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *