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