Android stopService() 没有停止

Android stopService() not stopping

这是我的代码 运行 停止我在后台 运行 的服务。如果我按下停止按钮,服务只会保持 运行。来自 onDestroy 函数的 toast 运行但服务不会停止。有帮助吗?

   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button btnStart = (Button) findViewById(R.id.btnStart);
    btnStart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startService(new Intent(getBaseContext(), myServices.class));
            //dialContactPhone("123123123");
        }
    });
    Button btnstop = (Button) findViewById(R.id.btnStop);
    btnstop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            stopService(new Intent(getBaseContext(), myServices.class));
        }
    });

}

这是服务中的代码。

@Override
public int onStartCommand(Intent intent,  int flags, int startId) {
    sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    if (sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) != null) {
        // success! we have an accelerometer

        accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL);
        vibrateThreshold = accelerometer.getMaximumRange() / 2;
        running = false;
    } else {
        // fai! we dont have an accelerometer!
    }

    //initialize vibration

return START_STICKY;
}

@Override
public void onDestroy(){
    super.onDestroy();
    Toast.makeText(this, "Servive stoped", Toast.LENGTH_LONG).show();
}

如果 "the service doen't stop",你的意思是 "the sensor readings keep arriving",那是因为你没有在 onDestroy() 中注销你的监听器。为此,请在 onDestroy() 中的 SensorManager 上调用 unregisterListener(),传入您的侦听器(看起来像是 this)。