7
votes

Comment tuer une méthode postdelayed dans Android

J'ai utilisé la méthode postéeDDelayed pour rafraîchir mon activité, ce qui fonctionne bien. Mais le problème est que même lorsque j'appuie sur la méthode postdelayed back Button, rappelez l'activité précédente.

// gestionnaire pour 30000 milli-secs Post Delay Rafraîchissement de l'activité P>

mHandler.postDelayed(new Runnable() {
public void run() {
               dostuff();

        }
            }, 30000);
    }

protected void dostuff() {
Intent intent = getIntent();
finish();startActivity(intent);
Toast.makeText(getApplicationContext(), "refreshed", Toast.LENGTH_LONG).show();
}

public void onBackPressed() {
        super.onBackPressed();
        finish();
        mHandler.removeCallbacks(null);
        }

protected void onStop() {
            mHandler.removeCallbacks(null);
        super.onStop();
    }


1 commentaires

Stackoverflow.com/q/16050807/931982 .. Dupliquer de votre propre question .. ne fais pas ça


3 Réponses :


3
votes

Une solution de contournement pour cela est:

Lorsque vous faites la méthode Dostuff (), vérifiez si l'activité. Si c'est finissant, revenez simplement.

Lorsque vous reculez, l'activité sera terminée et après que la Dostuff () s'exécute, elle ne fera rien.


0 commentaires

1
votes

mRhandler.reMoVecallbacks (null) ;. Vous passez null comme un paramètre. Passer un onje dirigé. Cela devrait fonctionner.

Runnable runnable = new Runnable() {
@Override
public void run() {
    // execute some code
}
};

Handler handler = new Handler();  
handler.postDelayed(runnable, 10000);
handler.removeCallbacks(runnable);


2 commentaires

Il doit être spécifiquement l'instance de runnable créé.


@dmon accepté que j'ai édité ma réponse



6
votes

Vous venez d'utiliser cela, il peut vous aider

   Runnable runobj=new Runnable() {
public void run()
{
 dostuff();

 }
  };
 mHandler.postDelayed(runobj, 30000);
   }
public void onBackPressed() 
{
super.onBackPressed();
mHandler.removeCallbacks(runobj);
}


0 commentaires