Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to kill a PostDelayed Method in Android [duplicate]

I used postedDelayed method to refresh my Activity, which works fine. But the problem is that even when I press the Back button postdelayed method call back the previous activity..

//handler for 30000 milli-secs post delay refreshment of the activity

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();
    }
like image 822
mavHarsha Avatar asked Apr 18 '13 03:04

mavHarsha


2 Answers

you just use this it may be help you

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

 }
  };
 mHandler.postDelayed(runobj, 30000);
   }
public void onBackPressed() 
{
super.onBackPressed();
mHandler.removeCallbacks(runobj);
}
like image 185
Prabu Avatar answered Sep 19 '22 21:09

Prabu


A workaround for this is :

When doing the dostuff() method, just check whether the Activity.isFinising() and do. If it is finishing, just return.

When you back press, the activity will get finished and after that if the doStuff() executes, it will not do anything.

like image 32
Eldhose M Babu Avatar answered Sep 20 '22 21:09

Eldhose M Babu