Các dịch vụ đôi khi khá phức tạp.
Khi bạn bắt đầu một dịch vụ từ một hoạt động (hoặc quy trình của bạn), về cơ bản, dịch vụ cũng nằm trên cùng một quy trình.
trích dẫn từ ghi chú của nhà phát triển
Hầu hết sự nhầm lẫn về lớp Dịch vụ thực sự xoay quanh những gì nó không phải là:
Một Dịch vụ không phải là một quá trình riêng biệt. Bản thân đối tượng Dịch vụ không ngụ ý rằng nó đang chạy trong quy trình của chính nó; trừ khi được chỉ định khác, nó chạy trong cùng một quá trình với ứng dụng mà nó là một phần.
Dịch vụ không phải là một chuỗi. Bản thân nó không phải là một phương tiện để thực hiện công việc của chuỗi chính (để tránh lỗi Ứng dụng Không phản hồi).
Vì vậy, điều này có nghĩa là, nếu người dùng vuốt ứng dụng khỏi các tác vụ gần đây, nó sẽ xóa quy trình của bạn (điều này bao gồm tất cả các hoạt động của bạn, v.v.). Bây giờ, hãy xem ba tình huống.
Đầu tiên , nơi dịch vụ không có thông báo nền trước.
Trong trường hợp này, quy trình của bạn bị hủy cùng với dịch vụ của bạn.
Thứ hai , nơi dịch vụ có thông báo nền trước
Trong trường hợp này, dịch vụ không bị giết và quá trình cũng không
Tình huống thứ ba Nếu dịch vụ không có thông báo nền, nó vẫn có thể tiếp tục chạy nếu ứng dụng bị đóng. Chúng tôi có thể làm điều này bằng cách làm cho dịch vụ chạy trong một quy trình khác. (Tuy nhiên, tôi đã nghe một số người nói rằng nó có thể không hoạt động. Hãy để bạn tự thử )
bạn có thể tạo một dịch vụ trong một quy trình riêng biệt bằng cách đưa thuộc tính dưới đây vào tệp kê khai của mình.
android: process = ": yourService"
hoặc là
android: process = "yourService" tên tiến trình phải bắt đầu bằng chữ thường.
trích dẫn từ ghi chú của nhà phát triển
Nếu tên được gán cho thuộc tính này bắt đầu bằng dấu hai chấm (':'), một quy trình mới, riêng tư đối với ứng dụng, sẽ được tạo khi cần thiết và dịch vụ sẽ chạy trong quy trình đó. Nếu tên tiến trình bắt đầu bằng một ký tự viết thường , dịch vụ sẽ chạy trong một tiến trình chung của tên đó, với điều kiện nó có quyền làm như vậy. Điều này cho phép các thành phần trong các ứng dụng khác nhau chia sẻ một quy trình, giảm việc sử dụng tài nguyên.
đây là những gì tôi đã thu thập được, nếu ai là chuyên gia, xin vui lòng sửa cho tôi nếu tôi sai :)