J'ai deux boutons. Le premier à démarrer mediaplayer et le second à l'annuler: mediaplayer est en AsyncTask
et j'utilise (thread -while) pour le répéter J'ai besoin du mediaplayer pour jouer jusqu'à ce que l'utilisateur appuie sur annuler quand je le lance est en cours d'exécution et quand je presse l'annuler arrête (quand je ne vais pas la page-layout-,)annuler classe AsyncTask dans android
private DoSomething doSomething;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first);
final MediaPlayer mp;
mp=MediaPlayer.create(this,R.raw.ab);
//===================================================
final Button first=(Button)findViewById(R.id.button1);
final Button second=(Button)findViewById(R.id.button2);
first.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
//start your asynctask
if(doSomething == null || doSomething.isCancelled()){
doSomething = new DoSomething();
doSomething = (DoSomething) doSomething.execute();
} }
});
second.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
doSomething.cancel(true);
} });}
le problème: quand je sors la mise en page et revenir à annuler la AsyncTask il y a aproblem dans
doSomething.cancel(true);
Parce que le pointeur null le doSomething voir asyntask ne pas en cours d'exécution pendant son exécution
J'utilise Status g=doSomething.getStatus();
il est PENDING pas RUNNING
class DoSomething extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... params) {
while(true){
if(isCancelled()){
break;
}
final MediaPlayer mp;
mp=MediaPlayer.create(getBaseContext(),R.raw.ab);
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
try {
Thread.sleep(8 * 1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace() }}
return null;
}}
pourquoi avez-vous besoin d'un AsyncTask? – pskink
Quelques commentaires: 1. Vous utilisez 2 utilisateurs pour poser une question. C'est vraiment déroutant. 2. Vous devez apprendre à ajouter des commentaires au lieu des réponses à votre question. 3. Postez votre logcat – DigCamara
Regardez ma réponse corrigée – DigCamara