web-dev-qa-db-fra.com

arrêter le service dans android

Ici, j'ai essayé un programme de service simple. Le service de démarrage fonctionne correctement et génère Toast, mais pas le service d'arrêt. Le code de ce service simple est comme ci-dessous:

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();
    }
}

Le code de l'activité à partir de laquelle ce service est appelé est le suivant:

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));
            }
        });
    }
}

Aidez-moi à arrêter le service avec ce bouton d’arrêt qui génère un toast dans la méthode onDestroy (). J'ai déjà vu de nombreux articles concernant le problème du service d’arrêt ici, mais pas satisfaisants, alors posant une nouvelle question. J'espère une réponse satisfaisante.

71
Ravi Bhatt
onDestroyed()

est le mauvais nom pour

onDestroy()  

Avez-vous commis une erreur uniquement dans cette question ou dans votre code?

45
kreker

Ce code fonctionne pour moi: vérifiez ceci lien
Ceci est mon code quand j'arrête et démarre le service en activité

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;
}
}
 }

Et en classe de service:

  @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();
}

CODAGE HEUREUX!

12
dondondon

Pour arrêter le service , nous devons utiliser la méthode stopService():

  Intent myService = new Intent(MainActivity.this, BackgroundSoundService.class);
  //startService(myService);
  stopService(myService);

alors la méthode onDestroy() du service s'appelle:

  @Override
    public void onDestroy() {

        Log.i(TAG, "onCreate() , service stopped...");
    }

Voici un exemple complet , y compris comment arrêter le service.

11
Jorgesys