У меня проблема с запросом обновлений местоположения из потока, запущенного службой.
Мое приложение должно получать обновления местоположения из фоновой службы (без какого-либо потока пользовательского интерфейса). Я объясню структуру моего приложения.
- У него есть служба, запущенная Boot Receiver.
- В сервисе
onStartCommand()
он запускает поток планировщика. - Поток планировщика запрашивает обновления местоположения.
Проблема в том, что когда планировщик вызывает locationMgr.requestLocationUpdates()
, он говорит Can't create handler inside thread that has not called Looper.prepare()
Я видел подобные проблемы для других, но не могу найти никакого решения. Я слышал, что мы можем звонить напрямую из службы, чтобы получать обновления местоположения без каких-либо проблем, но, поскольку я не могу найти способ приостановить службу (например, поток планировщика), я думаю, мне нужен отдельный поток.
Пожалуйста, объясните, почему это происходит? Требует ли Android поток пользовательского интерфейса для запроса местоположения? Есть ли решение, изменив структуру моего приложения?