gpt4 book ai didi

Android stopService() 没有停止

转载 作者:行者123 更新时间:2023-11-30 00:34:49 28 4
gpt4 key购买 nike

这是我运行的代码,用于停止在后台运行的服务。如果我按下停止按钮,服务就会继续运行。来自 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();
}

最佳答案

如果“服务不停止”是指“传感器读数不断到达”,那是因为您没有在 onDestroy() 中注销您的监听器。通过在 onDestroy() 中调用 SensorManager 上的 unregisterListener() 来实现,传递你的监听器(看起来像 this )。

关于Android stopService() 没有停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43598430/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com