Trên Android, tôi có một Activity
được gọi là FirstActivity
bắt đầu một Service
có tên MyService
để thực hiện các công việc mạng trong nền. Các Activity
và Service
liên lạc với nhau mọi lúc bằng cách gọi các phương thức.Hoạt động với dịch vụ lâu dài trong nền sẽ không bị giết
Bây giờ khi người dùng điều hướng FirstActivity
-SecondActivity
, dịch vụ nền nên không bị giết hoặc tái tạo, nhưng vẫn giữ còn sống và truyền cho SecondActivity
mà bây giờ sẽ là người nối với dịch vụ.
Nói cách khác, các Service
được chạy miễn là một trong hai Activity
s đang chạy, và nó không nên dừng lại khi người dùng điều hướng giữa hai Activity
s.
Một trong số Activity
s sẽ luôn ở mặt trước và trong thời gian này, dịch vụ nên (tối ưu) không bao giờ bị giết. Tôi nghĩ rằng đây không phải là một vấn đề bởi vì một trong hai Activity
s luôn hoạt động và do đó Android biết dịch vụ là quan trọng và không phải cái gì đó phải bị giết.
(Nếu không có cách nào để ngăn chặn Android từ giết chết và tái tạo các dịch vụ bất cứ lúc nào, tôi sẽ cần một cách để khôi phục lại toàn bộ trạng thái của dịch vụ một cách duyên dáng.)
Tổng hợp , Service
phải có cùng tuổi thọ như hai "Activity
" được kết hợp ". Nó nên bắt đầu với cái đầu tiên và dừng lại trước khi cả hai đã bị phá hủy.
Vì vậy, mã sau là đúng cho thiết lập và mục tiêu đó?
Đây có phải là cách tốt nhất để đảm bảo dịch vụ lâu dài trong nền của Activity
mà không bị giết hoặc tái tạo không?
Còn khoảng Context.BIND_AUTO_CREATE
thì sao? Có đúng là đặt cờ này ở đây không? Còn về Context.BIND_ADJUST_WITH_ACTIVITY
và Context.BIND_WAIVE_PRIORITY
- tôi có cần những thứ này không?
Bạn đã thử mã đó hay bạn đang hỏi trước khi thử? Nếu bạn đã thử, bạn có gặp bất kỳ lỗi nào không? Nó không hoạt động như bạn mong đợi? Chúng tôi sẽ có một cuộc thảo luận hiệu quả hơn và một câu trả lời hữu ích hơn cho cộng đồng và bản thân bạn nếu bạn thực sự thử nó và sau đó yêu cầu chúng tôi giải quyết một vấn đề cụ thể mà bạn có – DallaRosa
@DallaRosa Có, tất nhiên, tôi đã thử điều này.Đây là một câu hỏi chung về cách thiết kế một lớp dịch vụ và các lớp 'Activity' tương ứng để dịch vụ kéo dài càng lâu càng tốt và không bị giết. Người dùng đã báo cáo rằng các tính năng được cung cấp bởi dịch vụ này ngừng hoạt động trong một trong các lớp 'Hoạt động' theo thời gian. Và tôi (a) thấy khó để gỡ lỗi khi syste có thể giết dịch vụ này và (b) muốn biết về một số thực hành hay cải tiến tốt nhất nên được áp dụng cho dịch vụ này cho các mục tiêu và yêu cầu được xác định rõ. – caw
Tôi có thể thấy nhiều vấn đề trong việc quản lý 'Dịch vụ' của bạn. Bạn chỉ cần dừng nó khi 'Activity' đầu tiên bị phá hủy, hoặc phụ thuộc vào sự ràng buộc và quản lý nó đúng cách. Có một số hướng dẫn chung về điều này trong các sách Bắt đầu từ Android: https://books.google.com.pk/books?id=mRGrCQbqHkoC&pg=PA399 – corsair992