saber - tipos de servicios en android




El servicio no se detendrá cuando se llame al método stopService (2)

¿Están todas tus fijaciones cerradas?

Un servicio se puede usar de dos maneras. Los dos modos no están completamente separados. Puede enlazar a un servicio que se inició con startService (). Por ejemplo, un servicio de música de fondo podría iniciarse llamando a startService () con un objeto Intent que identifique la música que se reproducirá. Solo más tarde, posiblemente cuando el usuario quiera ejercer cierto control sobre el reproductor u obtener información sobre la canción actual, una actividad establecería una conexión con el servicio llamando a bindService (). En casos como este, stopService () no detendrá el servicio hasta que se cierre el último enlace

.

Actualmente tengo un servicio que funciona bien cuando lo inicio pero cuando trato de detenerlo usando el método stopService, su método onDestroy no se llama.

Aquí está el código que uso 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 usa stopService llama al método onDestroy del Servicio? Cuando onDestroy() 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 debería poner para detener el servicio?

EDITAR: para agregar onServiceConnected() se llama cuando se ejecuta onServiceDisconnected() lugar de onServiceDisconnected() , ¿por qué estaría sucediendo eso?

EDITAR: para agregar más información, se refiere a Encuadernación

Llamo bindService en el método onCreate () y luego tengo el método releaseBind () para desvincular el servicio.

Aquí está el código para ese método:

 public void releaseBind(){
    unbindService(this);
  }

Entonces, ¿supongo que la desvinculación no es mi problema?


Los muchachos lo siento por la respuesta tardía, pero hasta donde sé, he detenido con éxito el servicio en este código: pueden consultar un link aquí.

public void onClick(View src) {
switch (src.getId()) {
case R.id.buttonStart:
  Log.d(TAG, "onClick: starting srvice");
  startService(new Intent(this, MyService.class));
  break;
case R.id.buttonStop:
  Log.d(TAG, "onClick: stopping srvice");
  stopService(new Intent(this, MyService.class));
  break;
}
}

y en clase de servicios:

    public class MyService extends Service {
       private static final String TAG = "MyService";


@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {
    Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
    Log.d(TAG, "onCreate");


}

@Override
public void onDestroy() {
    Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
    Log.d(TAG, "onDestroy");

}

@Override
public void onStart(Intent intent, int startid) {
    Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
    Log.d(TAG, "onStart");

}
}




service