Sử dụng ứng dụng Android của tôi, khi người dùng thực hiện một hành động nào đó, dịch vụ nền được bắt đầu tìm nạp vị trí GPS hiện tại và lưu nó vào cơ sở dữ liệu ngoài việc thực hiện một số nội dung khác. Trong dịch vụ đó, tôi sử dụng requestLocationUpdates()
từ lớp LocationManager
và đợi cho đến khi onLocationChanged()
của số LocationListener
của tôi (được triển khai bởi dịch vụ) được kích hoạt. Nhưng cách tốt nhất để chờ onLocationChanged
là gì? Tôi có nên thăm dò ý kiến đơn giản trên một biến và chờ cho đến khi nó được thiết lập không? Có lời khuyên nào không?Cách tốt nhất để chờ sửa chữa vị trí GPS là gì?
Lưu ý: Tôi không thể viết đơn giản vào cơ sở dữ liệu trong onLocationChanged()
vì một số nội dung khác.
EDIT: Để xóa hoàn cảnh của tôi, tôi có thể trình bày một ví dụ tương tự như trường hợp của tôi: Giả sử người dùng nhấn nút và phương pháp myMethod
được kích hoạt sẽ trả về một số đối tượng. Sau đó, trong myMethod này, tôi sẽ đăng ký cập nhật vị trí từ GPS (sử dụng requestLocationChanged
) và ngoài ra hãy đợi vị trí của người dùng và sử dụng nó cho một cái gì đó. Nói cách khác, myMethod
không thể trở lại trước khi vị trí có mặt. Tôi không biết làm thế nào tôi có thể sử dụng onLocationChanged
trong trường hợp này.
Có lẽ vì người nghe gps ở trong dịch vụ nền chứ không phải là quy trình chính của anh ấy. – Segfault
Khi người dùng thực hiện hành động kích hoạt dịch vụ tìm nạp vị trí, ứng dụng của tôi sẽ nhận được vị trí hiện tại trước khi nó tiến hành. Giả sử người dùng nhấn một nút và phương thức myMethod được kích hoạt sẽ trả về một số đối tượng.Sau đó, trong myMethod này tôi sẽ đăng ký cập nhật vị trí từ GPS (bằng cách sử dụng requestLocationChanged) và ngoài ra chờ cho vị trí người dùng và sử dụng nó cho một cái gì đó. Nói cách khác, myMethod không thể trở lại trước khi vị trí có mặt. Tôi không biết làm thế nào tôi có thể sử dụng onLocationChanged trong trường hợp này. – qtips
Vì vậy, bạn muốn tạm dừng thực hiện trong myMethod trong khi chờ đợi cho gps để đồng bộ và cung cấp cho bạn một vị trí? Bạn không nên làm điều đó. Nếu đó là những gì bạn cần làm, bạn nên hiển thị một hộp thoại tiến trình sẽ bị loại bỏ khi onLocationChanged được kích hoạt. Và sau đó cũng trong onLocationChanged kết thúc bất cứ điều gì myMethod cần phải làm gì với vị trí. –