Tôi đã thực hiện một số thử nghiệm cho giải pháp thông báo đẩy tùy chỉnh cho các thiết bị Android sử dụng ổ cắm liên tục. Tôi muốn chia sẻ những phát hiện của mình và xác nhận kết quả.Quy tắc kết nối ổ cắm liên tục của Android
Simple Mô tả
Các ứng dụng chạy một dịch vụ foreground và thiết lập một kết nối với máy chủ và duy trì kết nối qua ping hung hăng (@ khoảng 10 giây). Nếu kết nối được phát hiện là đã chết, ứng dụng sẽ cố gắng kết nối lại vô thời hạn. Máy chủ gửi thông báo qua kênh song công.
Test 1:
Pinging is done using a timer at 10 second intervals.
Server sends notification every minute.
Applications acquires wifi and wake locks.
Duration : 8 hours
Battery loss : ~14%
thử nghiệm 2:
Pinging is done using AlarmManager at 10 second intervals.
Server sends notification every minute.
Application acquires only a wifilock
Duration : 8 hours
Battery loss : ~7%
Giả định: Một gói mạng đến tự động thức dậy CPU, do đó không cần thiết cho một khóa trỗi dậy. Sử dụng AlarmManager để ping (thay vì giờ) có nghĩa là chúng ta không cần một wakelock.
Loại bỏ wakelock đó thực sự dường như giúp pin. Đáng ngạc nhiên, việc ping mạnh mẽ vào một trong hai giải pháp không ảnh hưởng đến tuổi thọ pin nhiều như tôi mong đợi. (Chúng tôi đã có nhiều thử nghiệm khác bao gồm một trong những ứng dụng mà chỉ giữ một wifilock và không làm gì gây ra khoảng 4% đến 5% pin mất trong cùng thời gian)
Vì ứng dụng có thể gửi thành công tất cả các yêu cầu ping và nhận được tất cả các tin nhắn gửi đến, tôi tin rằng các giả định của tôi là chính xác. Nhưng tôi rất muốn nhận được một số xác nhận từ bất kỳ chuyên gia nào.
Một câu hỏi khác: Nếu ứng dụng thay vào đó, hãy nghe các kết nối đến. Tôi sẽ cần phải giữ một wakelock trong trường hợp này, đúng không? Một kết nối đến không đánh thức CPU? Chúng tôi không đi xuống con đường này, nhưng chỉ muốn xác nhận.
Ngoài ra, vui lòng không đề xuất GCM, nó đã bị loại trừ bởi chính sách của công ty.
Cảm ơn.
Tại sao bạn để ping di động nếu bạn có một kết nối socket? Tại sao không chỉ để cho máy chủ gửi thông tin khi có thực sự là một cái gì đó để nói và đôi khi có thể là một nhịp tim để giữ cho nó sống. –
Trong trường hợp của chúng tôi, kết nối có thể nằm giữa một vài công tắc. Và chúng tôi cần xác định các kết nối không hợp lệ càng sớm càng tốt. Vì vậy, đối với mỗi ping của khách hàng điện thoại di động máy chủ phải trả lời. Nó bảo vệ chúng ta chống lại việc ngắt kết nối im lặng. – Alex
Tôi chắc chắn có một câu hỏi hay ở đâu đó nhưng tôi không thể tìm thấy nó ở dạng hiện tại của nó Bạn có thể xem xét chỉnh sửa cho câu hỏi được nhắm mục tiêu nhiều hơn nếu bạn vẫn đang tìm câu trả lời. JMHO :-) – Chilledrat