Actualmente tengo un servicio que funciona bien cuando lo inicio pero cuando trato de detenerlo usando el método stopService no se llama a su método onDestroy.El servicio no se detiene cuando se llama al método stopService
Este es el código que utilizo para tratar de detener el servicio
stop_Scan_Button = (Button) findViewById (R.id.stopScanButton);
stop_Scan_Button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Log.d("DEBUGSERVICE", "Stop Button pressed");
Intent service = new Intent(CiceroEngine. CICERO_SERVICE);
releaseBind();
Log.d("Stop_Scan_Button", "Service: " + service.toString());
stopService(service);
Log.d("Stop_Scan_Button", "Service should stop! ");
}
});
Estoy en lo cierto al pensar que cuando se utiliza stopService llama al método OnDestroy del Servicio? Cuando presiono el botón de detener la exploración, no se llama al método onDestroy()
en mi Servicio.
¿Hay algo más que me falta que deba poner para detener el servicio?
EDIT: añadir onServiceConnected()
se llama cuando stopService se ejecuta en lugar de onServiceDisconnected()
, ¿por qué habría que estar pasando?
EDIT: Para añadir más información que se refiere Encuadernación
me llame bindService en el onCreate() método y luego tengo el método releaseBind() desenlaza el Servicio.
Este es el código para ese método:
public void releaseBind(){
unbindService(this);
}
así que supongo que la desunión no es mi problema?
He editado mi pregunta original para incluir información sobre mi vinculante, tengo que atar y luego compromiso.Por –
Ummm, que el código está totalmente en mal estado y es casi seguramente contribuyendo a su problema. 'bindService()' y 'unbindService()' son asíncronos y se garantiza que fallarán en la forma en que los está usando. Desafortunadamente, no tengo idea de lo que estás tratando de lograr aquí, así que no tengo una buena manera de aconsejarte más. – CommonsWare
Es solo una interfaz de usuario de dos botones, uno para iniciar el servicio y otro para detenerlo. He tomado la declaración if de mi método releaseBind() dejando solo unBindService (this); Parece que esto cancela el registro del Servicio, ya que cuando lo hago clic por segunda vez, aparece el error "Servicio no registrado". Sin embargo, stopService todavía no parece llamar al método onDestroy() en mi Servicio, los servicios en segundo plano aún funcionan –