UPDATE#2。我最初的問題是由兩位回答者的善意解決的。顯然,我需要開始一個新的問題,即運行結果代碼不會停止GPS。但現在沒有錯誤,所以我會將此標記爲已解決,如果我知道如何:-)OnPause停止GPS
UPDATE。
我有「工作」代碼感謝評論唯一的問題是,它沒有做它應該做的。它的工作原理是沒有錯誤。
爲了使它工作,我在活動的頂部添加了全局。
protected LocationListener ll;
protected LocationManager lm;
而且使用該代碼的onPause
@Override
protected void onPause() {
if(lm != null) {
lm.removeUpdates(ll);
}
ll = null;
lm = null;
super.onPause();
}
一切編譯和運行在手機上。我顯示GPS位置。麻煩的是,目標是讓GPS關閉,以便電池離開應用程序後不會死機。但GPS保持打開狀態。我看到這是一個常見的投訴,並沒有看到答案。我認爲lm.removeUpdates(ll)是解決方案,但它不起作用。
---------------原帖-------------------------
我想添加一些OnPause代碼來停止我的GPS更新。我已經厭倦了至少12個來自stackoverflow的代碼示例,包括問題和答案,並且都在Eclipse中給出了錯誤。
我的GPS代碼是在這裏(正常工作):
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textLat = (TextView)findViewById(R.id.textLat);
textLong = (TextView)findViewById(R.id.textLong);
textTimex = (TextView)findViewById(R.id.textTimex);
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener ll = new mylocationlistener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
}
class mylocationlistener implements LocationListener{
@Override
public void onLocationChanged(Location location) {
if (location != null)
{
double pLat = location.getLatitude();
double pLong = location.getLongitude();
long pTime = location.getTime();
DecimalFormat df = new DecimalFormat("#.######");
textLat.setText(df.format(pLat));
textLong.setText(df.format(pLong));
textTimex.setText(Long.toString(pTime));
//textTimex.setText(Long.toString(pTime));
//textTimex.setText(df.format(pLong));
}
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
// TODO Auto-generated method stub
}
}
我正在代碼從網絡上的例子,他們沒有工作。這裏是一個
@Override
public void onPause() {
lm.removeUpdates(locationListener);
super.onPause();
}
真的沒關係我所說的lm,它給出了一個錯誤,它無法解決它。我使用哪個示例代碼並不重要,它們都不是無錯的。
我必須做一些非常愚蠢的簡單...
如果我在全局聲明ll和lm,應用程序將編譯並運行,但當我退出該活動時會崩潰。我擁有的是@Override public void onPause(){ lm.removeUpdates(ll); } – 2012-07-10 05:57:39
@AllenEdwards:你可以在應用程序崩潰時提供日誌 – 2012-07-10 06:01:25
@AllenEdwards:嘗試使用'public void onPause(){ super。的onPause(); lm.removeUpdates(ll); }' – 2012-07-10 06:04:51