2012-06-28 68 views
4

我創建了一個應用程序,該應用程序具有「地理定位」功能,可以像在其他許多應用程序中一樣,在Google地圖上查找用戶。我使用「LocationManager.NETWORK_PROVIDER」來定位用戶,同時我實例化並啓動「MyLocationOverlay」(在onLocationChanged()方法中)以獲取位置。由於第二個,GPS打開(在頂部閃爍),這是正常的。關閉應用程序後,GPS更新將不會關閉

問題是,應用程序關閉後(後退按鈕或通過任務管理器),GPS功能仍然掛在那裏,試圖獲取更新。

如何在用戶離開活動後關閉它?我嘗試了來自這裏和其他論壇的建議,例如在方法onPause()onStop()onDestroy()內放置locationManager.removeUpdates(this);locationManager.removeUpdates(mMyLocationOverlay);。該方法OnPause看起來是這樣的:

@Override 
protected void onPause() { 
    super.onPause(); 
    locationManager.removeUpdates(this); 
    locationManager.removeUpdates(mMyLocationOverlay); 
} 

(「本」引用我的類,它實現LocationListener的)

請,有人可以幫助我在離開活動後關閉GPS更新(它的擴展類MapActivity),但不關閉手機本身的GPS功能?

有趣的是,當我用MyLocationOverlay刪除部件時,GPS當然不會啓動,因此沒有問題。所以我很確定mMyLocationOverlay是「不會停止」併產生問題的聽衆。

+2

」GPS功能仍然掛在那裏,試圖獲取更新「 - 您是如何確定這一點的? – CommonsWare

+0

通過手機上的GPS指示燈,開始活動時開始閃爍,但用戶離開活動時不會停止... – Leonidas

+0

如果通過「手機」指「模擬器」,該圖標永遠不會消失。 – CommonsWare

回答

1

(0);

因此,當應用程序關閉時,您使用的所有服務都將關閉。

+1

不要在生產代碼中使用'System.exit()'。 – CommonsWare

+0

有沒有更好的辦法呢?我使用System.exit()來處理每個代碼。我應該怎樣做纔能有更好的方式? – irukeru

+0

您不會終止您的過程。 Android將在需要時終止您的流程。您當然不需要終止您的過程以停止使用位置更新。 – CommonsWare

1

設置你的LocationListener等於null,如果你想關閉(或結束)的應用程序,您可以使用

System.exit重新實例onResume()

+0

傑克,感謝您的建議,我試過但仍然一樣,GPS指示燈繼續閃爍。我想你是指MyLocationOverlay偵聽器,因爲它是啓動GPS更新的人?所以我添加了行 mMyLocationOverlay = null;在onPause(),onStop(),onDestroy()方法中使用 ,但在此沒有任何進度。 任何其他idea_ – Leonidas

2

googleMap.setMyLocationEnabled(false); onPause()中的解決了我的問題。我在OnCreate()中設置爲true。希望這可以幫助其他人。 「