2011-01-21 111 views
0

我已經從android清單中聲明瞭一個後臺服務,這個服務將從應用程序的主Activity中啓動,並在無限循環中運行以執行位置更新到外部服務器。Android後臺服務問題

此後臺服務運行在與應用程序的主要活動(在服務的清單聲明中使用android:process標記)的進程不同的進程中。我遇到的問題是,當從服務中請求GPS位置更新時,即使使用DDMS/geo命令發送模擬位置,LocationListener的onLocationChanged()方法也不會被調用。但另一方面,從應用程序的主要活動請求GPS位置更新確實有效,並且在收到修復程序時正在調用onLocationChanged()方法,所以我想知道需要修改哪些內容才能獲得來自服務內部而不是活動的相同行爲。

在此先感謝您的幫助; 哈斯。

+0

向我們展示您如何請求更新。 – 2011-01-21 18:44:03

回答

3

此服務將從應用程序的主Activity中啓動,並在無限循環中運行以執行位置更新至外部服務器。

請不要這樣做,因爲你浪費了記憶。請使用AlarmManager定期觸發自行停止Service(如IntentService)。而且,由於您似乎在獲取位置信息,請考慮使用我的LocationPoller服務。

此後臺服務運行在與應用程序的主要活動(在服務的清單聲明中使用android:process標記)的進程不同的進程中。

請不要這樣做。你浪費內存並且不增加任何價值。它也可能會導致你的問題。

所以我想知道需要修改什麼才能從服務而不是活動中獲得相同的行爲。

在服務中獲取位置工作得很好。請參閱LocationPoller以獲取正在使用的示例。

+0

感謝您的LocationPoller解決方案。 – 2012-11-25 11:19:59