studio reiniciar programacion móviles libros desarrollo desarrollar curso aprende aplicaciones activity android service

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?