更新#2。我最初的问题被回答的两个人的善意解决了。显然,我需要提出一个新问题,即生成的代码在运行时不会停止 GPS。但是现在没有错误,所以如果我知道怎么做,我会将其标记为已解决:-)
更新。
由于注释,我有“工作”代码,唯一的问题是它没有做它应该做的事情。它的工作原理是没有错误。
为了让它发挥作用,我在活动的顶部全局添加了这个。
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 更新。我已经厌倦了至少十几个来自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 真的没关系,它会给出一个无法解决的错误。我使用哪个示例代码都没有关系,它们都没有错误。
我一定是在做一些非常愚蠢的事情......