Tôi đã trải qua Bound Service trong trang web dành cho nhà phát triển Android. Tôi nghĩ rằng tôi hiểu dịch vụ đủ nhưng tôi chỉ tìm thấy một cách khác để kết nối dịch vụ thông qua Sử dụng một lớp Messenger đặc biệt là cho dịch vụ địa phương. Ở đó tôi đã bối rối. Có lẽ tôi đã có khái niệm sai.Tại sao lại sử dụng Dịch vụ nếu nó chạy trong cùng một chuỗi trong android
Đây là hiểu biết của tôi về Dịch vụ Android. Bạn tạo một dịch vụ khi
- Bạn muốn thực hiện các công việc riêng biệt trong nền.
- Bạn muốn tạo quy trình riêng biệt.
- Bạn muốn làm cho nó chạy trên vòng đời khác nhau.
Lẫn lộn là mục đầu tiên trong danh sách, định nghĩa nền. Không phải là nền một sợi hoặc quá trình? Tôi không bao giờ nghĩ rằng nó có thể chạy trên thread chính.
Đây là dịch vụ cảnh báo trong các trang về dev.
Thận trọng: Một dịch vụ chạy trong các chủ đề chính của lưu trữ của nó quá trình dịch vụ không tạo ra thread riêng của mình và không chạy trong một quá trình riêng biệt (trừ khi bạn chỉ định khác). Điều này có nghĩa là, nếu dịch vụ của bạn sẽ thực hiện bất kỳ thao tác hoặc thao tác chặn CPU nào (chẳng hạn như phát lại hoặc kết nối MP3), bạn nên tạo một chuỗi mới trong dịch vụ để thực hiện công việc đó. Bằng cách sử dụng một chuỗi riêng biệt, bạn sẽ giảm nguy cơ lỗi ứng dụng không trả lời (ANR) và chủ đề chính của ứng dụng có thể vẫn dành riêng cho tương tác của người dùng với các hoạt động của bạn.
Câu hỏi 1. Tại sao người ta chọn sử dụng dịch vụ nếu chức năng dịch vụ vẫn chạy trên luồng chính? 2. Chúng ta phải viết một dịch vụ chỉ để chặn ANR ngay cả khi công việc tốn thời gian được thực hiện trong chủ đề chính? Giả sử dịch vụ chỉ dành cho ứng dụng của tôi. 3. Có bất kỳ trường hợp hoặc lý do thực tế nào sử dụng dịch vụ là riêng tư và đang chạy trong cùng một luồng không?
Xin cảm ơn trước.
mục đích chính của dịch vụ là chúng có chu kỳ sống khác với vòng đời hoạt động của bạn - vì vậy # 3 áp dụng tại đây. – pskink