2012-09-21 33 views
6

Dịch vụ ràng buộc/hủy liên kết ban đầu có thể được khách hàng gọi bằng cách sử dụng bindService()/unbindService().Câu hỏi về dịch vụ của Android về ràng buộc/hủy liên kết?

Câu hỏi của tôi là cách hủy liên kết dịch vụ ở phía dịch vụ, không được gọi là unbindService() bởi khách hàng, có lẽ tôi nên gọi nó là unbindClient.

Tôi nghĩ dịch vụ nên biết khách hàng nào bị ràng buộc với nó, vì vậy có cách nào để yêu cầu dịch vụ hủy liên kết một khách hàng cụ thể không?

Bởi vì tôi chỉ viết những dịch vụ, và tôi do't biết nếu khách hàng gọi unbindService() một cách chính xác, do đó, tôi có câu hỏi này ..

+1

Có thể bạn có thể làm gì đó để cơ cấu lại lớp học của mình. Tại sao bạn cần phải biết khách hàng nào bị ngắt kết nối khỏi dịch vụ? –

+0

như chương trình c/s bình thường, tôi muốn thực hiện một số công việc tái chế cơ bản khi một khách hàng bị ngắt kết nối, bạn có ý tưởng nào tốt hơn không? – kwf2030

+0

Bạn có thể gọi nó từ 'Hoạt động' bị ngắt kết nối khỏi' Dịch vụ' thay thế không? Có một phương thức 'onDestroy()' cho các hoạt động, hoặc 'onPause()' hoặc 'onStop()'. Bạn có thể đặt nó ở đó. –

Trả lời

0

Nếu bạn có quyền truy cập vào mã khách hàng -

Bạn có thể gọi startService() từ máy khách - sẽ khởi động dịch vụ (và không kết thúc Service khi thoát khỏi Activity - vì chỉ stopService() sẽ đóng dịch vụ này).

Và cũng có thể, Khách hàng có thể gọi bindService() - nếu họ muốn thực hiện tương tác Activity - Service.

Khi thoát/hủy liên kết máy khách, dịch vụ sẽ vẫn chạy do startService() được gọi - Service có thể thực hiện các thao tác khác và sau đó gọi stopService().

-1

Dịch vụ không thể tự hủy liên kết. Bạn có thể thực hiện dịch vụ đã bắt đầu dừng tự động với stopSelf().

Hệ điều hành theo dõi tất cả các ràng buộc và không bị ràng buộc đằng sau hậu trường. Bạn không phải lo lắng về việc tái chế đối tượng, Android làm điều đó cho bạn.

+0

Nếu bạn nghĩ câu trả lời là gây hiểu lầm. Hãy chỉ ra những gì bạn nghĩ là sai với nó. – Wesam

0

Nếu bạn muốn chỉ giới hạn chức năng mà bạn trả về khi dịch vụ được bắt đầu và bindService() được gọi. Bạn có thể đăng ký một khách hàng và hủy đăng ký khi bạn đã thực hiện xong dịch vụ.Đó là cách ràng buộc dịch vụ của bạn sẽ không có bất kỳ tác động nào. Tôi đã chọn từ ví dụ Remote Messenger Service trong trang web android