2010-09-28 9 views
11

Ứng dụng của tôi kiểm tra định kỳ vị trí bằng cách sử dụng báo thức đến BroastcastReceiver bắt đầu dịch vụ. Tôi biết tôi nên mua một chiếc wakelock trước khi tôi bắt đầu dịch vụ nhưng câu hỏi của tôi là khi nào tôi có thể phát hành nó?Android - Khi sử dụng LocationManager.requestLocationUpdates, tôi có cần WakeLock không?

Nếu tôi nhả wakelock sau khi gọi requestLocationUpdates, thiết bị có thể chuyển sang chế độ ngủ và không gọi số LocationListener hoặc thiết bị luôn đánh thức để cập nhật và vẫn tỉnh táo cho đến khi cuộc gọi lại được trả lại không? Tôi miễn cưỡng để giữ wakelock vì điều đó sẽ ngăn chặn các thiết bị từ ngủ giữa các bản cập nhật cho đến khi tôi được thực hiện với vị trí.

+0

Dự đoán được đào tạo một chút của tôi là yêu cầu cập nhật vị trí sẽ giữ một wakelock để bạn có thể phát hành. Tuy nhiên, bạn đang làm gì mà bạn cần cập nhật vị trí khi điện thoại đang ngủ? – Falmarri

+2

Tôi nghĩ có thể có rất nhiều trường hợp sử dụng để cập nhật vị trí trong khi thiết bị đang ngủ, ví dụ: ghi lại các tuyến đường GPS của một cuộc hành trình. –

+0

Bạn có thể xem [CommonsGuy's 'WakefulService'] [1], theo tài liệu có thể xử lý các phần wakelock cho bạn. [1]: http: //github.com/commonsguy/cwac-wakeful#readme –

Trả lời

2

Vì vậy, dựa trên kinh nghiệm của tôi (và được xác nhận trong các ý kiến ​​ở đây), giải phóng khóa thức sau khi sau khi gọi requestLocationUpdates dường như không phải là vấn đề. Thật không may, cách duy nhất để có câu trả lời dứt khoát là hỏi nhà phát triển nền tảng, nhưng tôi đã nhận được no response.

+1

Điều này là chính xác. Tôi không phải là nhà phát triển nền tảng, nhưng có một ứng dụng theo dõi GPS hoạt động chính xác khi thiết bị đang "ngủ" ... Về cơ bản, mỗi lần cập nhật vị trí sau cùng đi kèm với 'WakeLock', cho phép bạn nhận' Intent'. Trong máy thu của bạn, nếu bạn muốn xử lý sự kiện đó, bạn cần phải nhận (và sau đó phát hành) WakeLock của riêng bạn. –

+0

Nó có tạo sự khác biệt cho phương thức 'requestLocationUpdates' mà bạn gọi không? @RichardLeMesurier: bạn đang sử dụng phiên bản 'PendingIntent'? –

+0

@Mr_and_Mrs_D Tôi không biết và khuyên bạn nên thử nó để đảm bảo. Tôi đã sử dụng phiên bản 'PendingIntent'. –

0

kiểm tra chế độ tiết kiệm năng lượng trong cài đặt hệ thống Android: phải tắt để cho phép trình quản lý vị trí tạo vị trí cập nhật khi màn hình tắt; thử nghiệm trên Samsung A5; Tôi đã mất hai ngày để tìm giải pháp này :-)