Kết nối dịch vụ:

Một phần của tài liệu lập trình 3d ứng dụng trên nền tảng android (Trang 27 - 31)

Khi một Activity được kết nối tới một Service, nó duy trì một tham chiếu đến một thực thể Service. Để kết nối đến thực thể này, thực thi phương thức onBind như

sau:

private final IBinder binder = new MyBinder(); @Override

public IBinder onBind(Intent intent) {

return binder;

}

-------------

public class MyBinder extends Binder {

MyService getService() {

return MyService.this;

}

Sự kết nối giữa Service và Acitvity được thể hiện qua một ServiceConnection. Điều cần làm là thực thi một ServiceConnection mới, override phương thức

onServiceConnected và onServiceDisconnected. // tham chiếu đến dịch vụ

private MyService serviceBinder;

// xử lý kết nồi giữa service và activity

private ServiceConnection mConnection = new ServiceConnection() {

public void onServiceConnected(ComponentName className, IBinder service) {

// được gọi khi liên kết được thực hiện

serviceBinder = ((MyService.MyBinder)service).getService();

}

public void onServiceDisconnected(ComponentName className) {

// nhận khi dịch vụ ngắt kết nối một cách bất ngờ

serviceBinder = null;

}

Để thực hiện việc kết nối, gọi phương thức bindService:

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

// kết nối dịch vụ

bindService(bindIntent, mConnection, Context.BIND_AUTO_CREATE);

}

Hình 8 – Hoạt động kết nối dịch vụ

Thơng thường, vịng đời của dịch vụ khi có client kết nối từ đầu như sau:

o Cũng bắt đầu bằng onCreate() rồi đến onBind() và dịch vụ chạy dưới nền.

o Khi khơng cịn client kết nối tới thì dịch vụ gọi onUnbind() rồi onDestroy().

Có một số trường hợp khơng thơng thường, ví dụ như:

o Có một context khởi động một dịch vụ, sau đó có một số client kết nối (bind) tới service.

o Có nhiều client cùng lúc kết nối tới dịch vụ.

o Một activity vừa gọi startService() vừa gọi bindService(). 2.4 Trình cung cấp nội dung (Content Providers):

Một phần của tài liệu lập trình 3d ứng dụng trên nền tảng android (Trang 27 - 31)

Tải bản đầy đủ (DOCX)

(137 trang)
w