无法停止位置监听器android



我正在使用这个SmartLocation库。我可以使用下面的代码来停止活动中的服务。

SmartLocation.with(this).location().stop();

但是当我在服务中使用这个库时,我能够启动,但它不会停止,直到我关闭应用程序。还有一件事要注意的是,当我使用stopService() .

OnDestroy()也被称为

其余的服务代码在这里

public class locationService extends Service implements OnLocationUpdatedListener,   OnActivityUpdatedListener
 {
    private LocationGooglePlayServicesProvider provider;
    NotificationCompat.Builder builder;
    NotificationManager notificationManager;
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return mBinder;
    }
    @Override
    public boolean onUnbind(Intent intent) {
        return super.onUnbind(intent);
    }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        provider = new LocationGooglePlayServicesProvider();
        provider.setCheckLocationSettings(true);
        SmartLocation smartLocation = new SmartLocation.Builder(getApplicationContext()).logging(true).build();
        smartLocation.location(provider).continuous().start(this);
        smartLocation.activity().start(this);
        return START_NOT_STICKY;
    }
    @Override
    public void onCreate() {
        super.onCreate();
    }
    @Override
    public boolean stopService(Intent name) {
        return super.stopService(name);
    }
    @Override
    public void onDestroy() {
        stop();
    }
    @Override
    public void onLocationUpdated(Location location) {
        double lat = location.getLatitude();
        double lng = location.getLongitude();
    }
    @Override
    public void onActivityUpdated(DetectedActivity detectedActivity) {
    }
    public void stop()
    {
        SmartLocation.with(this).location().stop();
        stopForeground(true);
    }
}

我正在使用活动识别而停止,因为我正在使用服务,它不工作。因此,我将smartlocation实例声明为全局然后像这样停止它smartLocation.location().stop();

下面是我修改的代码

public class locationService extends Service implements OnLocationUpdatedListener,   OnActivityUpdatedListener
 {
    private LocationGooglePlayServicesProvider provider;
    NotificationCompat.Builder builder;
    NotificationManager notificationManager;
    SmartLocation smartLocation;
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return mBinder;
    }
    @Override
    public boolean onUnbind(Intent intent) {
        return super.onUnbind(intent);
    }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        provider = new LocationGooglePlayServicesProvider();
        provider.setCheckLocationSettings(true);
        smartLocation = new SmartLocation.Builder(getApplicationContext()).logging(true).build();
        smartLocation.location(provider).continuous().start(this);
        smartLocation.activity().start(this);
        return START_NOT_STICKY;
    }
    @Override
    public void onCreate() {
        super.onCreate();
    }
    @Override
    public boolean stopService(Intent name) {
        return super.stopService(name);
    }
    @Override
    public void onDestroy() {
        stop();
    }
    @Override
    public void onLocationUpdated(Location location) {
        double lat = location.getLatitude();
        double lng = location.getLongitude();
    }
    @Override
    public void onActivityUpdated(DetectedActivity detectedActivity) {
    }
    public void stop()
    {
        smartLocation.location().stop();
        stopForeground(true);
    }
}

最新更新