Aquí probé un programa de servicio simple. El servicio de inicio funciona bien y genera Toast, pero el servicio de detención no. El código de este sencillo servicio 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 parada que genera tostadas en el método onDestroy (). Ya he visto muchas publicaciones relacionadas con el problema de detener el servicio aquí, pero no satisfactorias, por lo que publicando una nueva pregunta. Espero una respuesta satisfactoria.
stopService(serviceIntent)
funciona?