2012-02-09 33 views
5

Chúng tôi có một Dịch vụ chăm sóc nhiều thứ trong một trong các hoạt động của chúng tôi. Chúng tôi khá mới mẻ với Android và tự hỏi thời điểm hoàn hảo để gắn kết với dịch vụ đó là gì. Chúng tôi chỉ cần dịch vụ cho một nửa số tương tác có thể thông qua hoạt động. Vì vậy, chúng ta phải giải quyết cho một trong hai khả năng:Dịch vụ Android: Ràng buộc theo yêu cầu và Liên kết với #onCreate()

  • ràng buộc để các dịch vụ khi chúng ta thực sự cần nó, mà sẽ thêm một số tiền hợp lý của chi phí thực hiện khôn ngoan
  • ràng buộc với Dịch vụ trong onCreate() phương pháp mà không cần phải kiểm tra xem dịch vụ có đang chạy hay không, ràng buộc theo yêu cầu, có thể yêu cầu bộ nhớ đệm được thực hiện, v.v.

"Cách android" ở đây là gì? Là một dịch vụ đang chạy rất nhiều chi phí hoặc nó chỉ nên được bắt đầu khi thực sự cần thiết? Bản thân dịch vụ này rất nhẹ.

+1

Cá nhân tôi sẽ liên kết với nó trong onCreate. Binding/unbinding tất cả các thời gian dường như không cần thiết và nếu bạn nhìn xung quanh tại implemetations của dịch vụ bạn sẽ se thats không như thế nào nó được thực hiện. Thats của tôi experiance atleast, mặc dù Im không phải là một chuyên gia về các chi tiết cụ thể về Dịch vụ. Nhìn xung quanh và tìm người khác và triển khai Google. – DecodeGnome

Trả lời

1

Cá nhân tôi thích gọi bindService() trong onCreate(), và sau khi kết thúc, sử dụng hàm unbindService() trong onDestroy(). Lý do cho điều đó là bindService() thực sự là một cuộc gọi không đồng bộ. chưa được ghi chép đầy đủ trong API. Khi bạn gọi hàm bindService(), tham chiếu của đối tượng kết dính mà bạn nhận được bên trong phương thức gọi lại ServiceConnection.onServiceConnected() không được khởi tạo ngay lập tức, có một sự chậm trễ trong thời gian chờ đợi sau khi gọi bindService() và trước khi đối tượng kết dính được khởi tạo và sẵn sàng sử dụng . do đó, nơi thích hợp nhất để gọi nó là onCreate() vì chúng ta thường không biểu diễn nhiều hoạt động nặng và cần sử dụng đối tượng chất kết dính ngay lập tức ở giai đoạn này.

Các vấn đề liên quan