解決“locationManager.removeUpdates()關閉不了gps定位”的方法,locationmanager
轉載請註明出處,謝謝http://blog.csdn.net/harryweasley/article/details/41575731
最近做一個gps項目的中途,遇到了一個問題,我調用locationManager.removeUpdates(listener)這個方法後,本以為gps定位就會停止,但是並沒有停止gps定位功能,gps訊號欄裡的還是繼續在閃爍,之後就各種百度,也找不到正確的解決方案,然後又去翻牆繼續Google,最終找到瞭解決方法,在此記錄一下,協助那些因為這個問題困惑的人。
首先,讓我們複習一下正確關閉gps的三個步驟:
第一個步驟:
移除LocationListener
第二個步驟:
將LocationManager置為null
第三個步驟:
將LocationListener置為null
下面是正確關閉gps的代碼,名字是由你自己定的
if(_locationManager != null){ _locationManager.removeUpdates(<span style="font-family: Arial, Helvetica, sans-serif;">_locationListener</span>); _locationManager = null; } if(_locationListener != null) { _locationListener = null; }如果這些步驟不起作用,你的gps訊號還是在閃爍的話,下面有潛在的兩個問題來解決:
第一個原因:這個是最常見,也是最令人沮喪的原因了。你可能有意或無意的執行個體化了多個LocationManager。最簡單的避免這個錯誤的方法是,將執行個體LocationManager這個代碼放在onResume()事件裡面,同時在onPause()方法中關閉它。仔細的控制被你開啟的LocationManager並及時關閉它。當你在不同的Activity之間LocationManager,你一定要留心。如果LocationManager正在運行,你又執行個體化了一個,那麼你將不能夠如願用代碼關閉它,你就只能通過手動來關閉它。
第二個原因:可能是你手機上的其他的APP已導致這個LocationManager運行中,那麼很顯然,它將不會通過你的app來關閉,多次檢查已消除這個可能性,確保你已經關閉其他所有的可能用到gps定位的APP。