Tôi đang viết một ứng dụng SIP sử dụng SDK. Ứng dụng của tôi có nhiều Hoạt động và vì vậy tôi khởi tạo và tắt SDK bằng cách sử dụng các phương thức onCreate và onDestroy của dịch vụ để tôi có thể chạy nó trong suốt thời gian Ứng dụng của tôi (không chỉ một Hoạt động riêng lẻ).Tôi làm cách nào để chia sẻ một dịch vụ giữa các hoạt động mà không cần khởi động lại?
Các ví dụ ứng dụng Tôi đang làm việc từ các cuộc gọi startService và sau đó chỉ cần rò rỉ dịch vụ - Tôi không muốn làm điều này nhưng tôi không chắc chắn rằng tôi có một sự thay thế.
Điều tôi sẽ như cần làm là liên kết với dịch vụ bằng cách sử dụng Ngữ cảnh.BIND_AUTO_CREATE trong phương thức OnCreate của lớp cơ sở Hoạt động của tôi và hủy liên kết trong OnDestroy. Tất cả các Hoạt động của tôi mở rộng từ điều này, vì vậy tôi sẽ có Dịch vụ trong tất cả các Hoạt động của tôi.
Nhưng, những gì sẽ xảy ra khi những thay đổi cấu hình hoặc tôi chuyển sang hoạt động? Dịch vụ có bị xâm phạm mạnh trong khoảng thời gian ngắn giữa các hoạt động hoặc có đảm bảo rằng dịch vụ đó sẽ không hoạt động? Nếu nó là cũ, không phải là hơi làm tê liệt việc sử dụng các dịch vụ? Tôi nên sử dụng mẫu thiết kế nào để tạo một thứ gì đó tồn tại cho chính xác tuổi thọ của Đơn đăng ký của tôi?
Và làm cách nào để tôi gọi stopService theo cách bạn đề xuất? Không có cách nào để phát hiện các ứng dụng đóng cửa, nếu có tôi sẽ không cần một dịch vụ, tôi chỉ cần đặt nó trong ứng dụng! – pjcard
Và tôi nói "có", có cách. Để nhận được Vòng đời ứng dụng, bạn cần tạo một lớp Ứng dụng tùy chỉnh mở rộng Ứng dụng và đăng ký nó là biểu hiện. Tôi quên đề cập đến nó trong câu trả lời.Và có, bạn có thể không cần một dịch vụ nào cả vì bạn đang hạn chế nó trong vòng đời của ứng dụng. Xem ans bởi Reto Meier tại đây: http://stackoverflow.com/questions/456211/activity-restart-on-rotation-android – Akhil
Xin lỗi Akhil, điều đó vẫn không đúng. Tôi đã có một lớp ứng dụng tùy chỉnh nhưng nó không có phương thức để phát hiện ứng dụng thoát. Xem phần "Bổ sung" của tôi về câu hỏi vì lý do này. – pjcard