이것은 백그라운드에서 실행중인 서비스를 중지하기 위해 실행중인 코드입니다. 중지 버튼을 누르면 서비스가 계속 실행됩니다. onDestroy 함수의 축배는 실행되지만 서비스는 중단되지 않습니다. 애니?Android stopService() 중지하지 않음
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));
}
});
}
이것은 서비스중인 코드입니다. 당신이 onDestroy()
에 리스너 등록을 취소하지 않았기 때문에
@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();
}
"service doen't stop"은 "onDestroy()"에서 청취자를 등록 취소하지 않았기 때문에 "센서 판독 값이 계속 도착 함"을 의미합니다. – CommonsWare
네, 그게 무슨 뜻인지. 청취자 등록을 어떻게 취소해야합니까? –