首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >停止LocationManager的onPause

停止LocationManager的onPause
EN

Stack Overflow用户
提问于 2011-12-18 08:00:14
回答 3查看 13.4K关注 0票数 4

我想我这样做对吗?

我有这个代码,它通过一个MyLocationListener方法开始寻找我的GPS位置,这里没有显示,它可以工作,但我想要停止locationManager onPause,或者当这个活动不是最新的时候,但是我不能得到removeUpdates代码来解决。

代码语言:javascript
复制
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);        
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MINIMUM_TIME_BETWEEN_UPDATES, MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, new MyLocationListener());

然后,

代码语言:javascript
复制
@Override 
public void onPause()
{
    super.onPause();
    locationManager.removeUpdates(MyLocationListener);
}

“MyLocationListener”解决不了问题,我也试过“this”,

代码语言:javascript
复制
locationManager.removeUpdates((LocationListener) this);

它解决了问题,但在运行时给出了一个“Cannot Pause”错误。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-18 08:07:31

我有一个类似的问题:Having some trouble getting my GPS sensor to stop

您可能需要定义一个与启动和结束的LocationListener相同的and。

尝试:

代码语言:javascript
复制
LocationListener mlocListener; 

在类名下,然后在onCreate方法中使用以下内容:

代码语言:javascript
复制
mlocListener = new MyLocationListener();

并对整个类使用上面的mlocListener。

所以让你的类看起来像这样:

代码语言:javascript
复制
public class SomeClass extends Activity {
    LocationManager mlocManager;
    LocationListener mlocListener; 

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.screenlayout);
    mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    mlocListener = new MyLocationListener();
    mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
}

@Override
public void onPause(){
    mlocManager.removeUpdates(mlocListener);
    super.onPause();
} 
票数 8
EN

Stack Overflow用户

发布于 2012-05-25 18:32:53

您可以在Activity类中实现LocationListener接口:

代码语言:javascript
复制
public class MyActivity extends Activity implements LocationListener {

    private LocationManager mLocMgr;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mLocMgr = (LocationManager) getSystemService(LOCATION_SERVICE);
        mLocMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 100, this);

    }

    @Override
    public void onLocationChanged(Location location) {}
    @Override
    public void onProviderDisabled(String arg0) {}
    @Override
    public void onProviderEnabled(String provider) {}
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {}

    @Override
    public void onPause() {
        super.onPause();
        mLocMgr.removeUpdates(this);
    }
}
票数 4
EN

Stack Overflow用户

发布于 2011-12-18 08:22:23

我认为您只需要切换超级onPause调用和removeUpdates调用的顺序即可。

代码语言:javascript
复制
@Override 
public void onPause()
{
    locationManager.removeUpdates(MyLocationListener);
    super.onPause();
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8548859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档