reiniciar - detener el servicio en Android
programacion android pdf 2018 (3)
Aquí probé un programa de servicio simple. El servicio de inicio funciona bien y genera Toast, pero el servicio de detención no funciona. El código de este servicio simple es el siguiente:
public class MailService extends Service {
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
public void onCreate(){
super.onCreate();
Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show();
}
public void onDestroyed(){
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_SHORT).show();
super.onDestroy();
}
}
El código de la actividad desde donde se llama este servicio es el siguiente:
public class ServiceTest extends Activity{
private Button start,stop;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.service_test);
start=(Button)findViewById(R.id.btnStart);
stop=(Button)findViewById(R.id.btnStop);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startService(new Intent(ServiceTest.this,MailService.class));
}
});
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
stopService(new Intent(ServiceTest.this,MailService.class));
}
});
}
}
Ayúdame a detener el servicio con ese botón de detención que genera tostadas en el método onDestroy (). Ya he visto muchas publicaciones relacionadas con el problema de detener el servicio aquí, pero no son satisfactorias, por lo que se publica una nueva pregunta. Espero una respuesta satisfactoria.
Este código funciona para mí: mira este enlace
Este es mi código cuando paro e inicio el servicio en la actividad
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 servicio:
@Override
public void onCreate() {
Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
Log.d(TAG, "onCreate");
player = MediaPlayer.create(this, R.raw.braincandy);
player.setLooping(false); // Set looping
}
@Override
public void onDestroy() {
Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
Log.d(TAG, "onDestroy");
player.stop();
}
¡CÓDIGO FELIZ!
Para detener el servicio , debemos usar el método stopService()
:
Intent myService = new Intent(MainActivity.this, BackgroundSoundService.class);
//startService(myService);
stopService(myService);
luego se onDestroy()
al método onDestroy()
en el servicio:
@Override
public void onDestroy() {
Log.i(TAG, "onCreate() , service stopped...");
}
Aquí hay un ejemplo completo que incluye cómo detener el servicio.
onDestroyed()
es un nombre incorrecto para
onDestroy()
¿Cometió un error solo en esta pregunta o en su código también?