2010-07-01 30 views

Trả lời

12

No. Không có khác biệt cơ bản.

Điều đó nói rằng, phân lớp android.app.Application là rất địa điểm tốt để lưu trữ dữ liệu toàn cầu/tiểu bang. Chỉ có một ví dụ và mọi thứ xuất phát từ Context có quyền truy cập vào nó.

Tôi cũng chắc chắn rằng việc ràng buộc dịch vụ với một ứng dụng sẽ dẫn đến một số kiếp sống lẻ nếu bạn không cẩn thận. Điều tôi ngụ ý là mặc dù ứng dụng của bạn không hoạt động và không có hoạt động nào, ứng dụng của bạn vẫn có thể tồn tại vì dịch vụ của bạn vẫn tồn tại. Dịch vụ của bạn vẫn tồn tại vì ứng dụng của bạn vẫn tồn tại. Bạn sẽ phải tự tắt dịch vụ dựa trên một số sự kiện khác ngoài onDestroy.

+0

Cảm ơn. Vì vậy, không có cách nào để tắt dịch vụ trong trường hợp này. –

+0

Tôi phải hỏi, tại sao bạn muốn một dịch vụ nếu bạn định lưu trữ dữ liệu trong đối tượng Ứng dụng? Tất cả các hoạt động của bạn có quyền truy cập vào đối tượng ứng dụng thông qua getApplication(). –

+0

Dịch vụ sẽ thực hiện tất cả I/O. Tôi đang cố triển khai một cái gì đó như http://stackoverflow.com/questions/3141632/android-service-interacting-with-multiple-activities Có lẽ tôi có thể lưu trữ dữ liệu/trạng thái toàn cục này trong dịch vụ của mình (?) . Không biết nếu đó là thiết kế tốt hay thiết kế tồi vì đây là lần đầu tiên tôi làm việc với nhiều hoạt động và dịch vụ. –

3

câu trả lời của @ Jere.Jones không chính xác 100%. Bạn có một lớp Instance of Application cho mỗi Process. Vì vậy, nếu bạn chạy dịch vụ của mình trong một quy trình riêng biệt, ví dụ: với

<service 
     android:name=".engine.NetworkService" 
     android:exported="false" 
     android:process=":xxxService" /> 

bạn có hai Instances riêng cuả appliaction, có nghĩa là nếu bạn cần phải "giữ trạng thái" bạn phải đảm bảo hoặc không xử lý qua nó, hoặc bạn phải sử dụng IPC để đồng bộ hóa các sates.

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