在onDestroy()

时间:2018-10-29 02:26:24

标签: java android android-activity location android-lifecycle

我有一个带有两个按钮的应用程序,用于启动和停止GPS跟踪。我希望用户能够在应用程序运行时离开它,但同时继续跟踪位置。返回时,用户应该能够使用停止按钮停止跟踪器。很简单。

问题在于,在关闭并重新打开应用程序后,无法停止位置监听器(removeUpdates)。我认为这是因为在onCreate()中创建的位置管理器被绑定到位置监听器的新实例,该实例与应用程序首次关闭时在后台运行的实例不相同。

我在声明期间无法分配位置管理器,因为它需要上下文。

我的声明

LocationManager myLocMan;
LocationListener myLocList = new LocationListener() {
    @Override
    public void onLocationChanged(Location location) {
        //Do things
    }

    @Override
    public void onStatusChanged(String s, int i, Bundle bundle) {

    }

    @Override
    public void onProviderEnabled(String s) {

    }

    @Override
    public void onProviderDisabled(String s) {

    }
};

这是onCreate()中的相关代码:

myLocMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

startButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            myLocMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, myLocList);
            startButton.setEnabled(false);
            stopButton.setEnabled(true);
        }
    });

stopButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        myLocMan.removeUpdates(myLocList);
        startButton.setEnabled(true);
        stopButton.setEnabled(false);
    }
});

0 个答案:

没有答案