我有一個IntentService應該得到用戶的位置,並根據它,從互聯網上下載一些數據。而我所面臨的問題是很多次,在onConnected()方法被調用之前,服務已經完成。所以位置爲空。它並不總是發生,但經常發生。安卓,從IntentService的getLastLocation()
我可以做一些不同的事(比如asynctask),但IntentService可以從活動(當用戶按下按鈕時)或者用AlarmManager(定期)調用。所以我不知道另一種方式來做到這一點。那麼,我可以創建一個首先獲取位置的asynctask,然後啓動IntentService。當從AlarmManager調用服務時做一些不同的事情。但是,我不得不創建不同的代碼,最後,做同樣的事情。
所以我的問題是,有沒有什麼辦法將它排除,保持IntentService?還是有另一種更好的方法來做到這一點?
謝謝你。
PS:伊夫隨後從Android開發者指南:
https://developer.android.com/intl/es/training/location/retrieve-current.html
所以,如果我理解正確,我會創建一個服務,這是最好的地方聽。所以這個服務應該擁有一個有效的(非空)位置。然後,我會保持我的IntentService,但有一個有效的位置對象已經準備好,當它啓動。這是對的嗎?順便說一下,它會耗盡電池嗎? – Duqe
所有IntentService都可以(如果您查看[源代碼](https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/app/IntentService。 java))創建一個單獨的處理線程,並在該線程完成時停止該服務。我的建議是自己控制生命週期 - 在開始處理線程之前一直等到您有位置,並在完成時停止服務。您仍然不希望始終收聽位置更新(因爲這會消耗電池電量)。 – ianhanniballake
我如何控制自己的生命週期? – Duqe