Post Delay Method - Android

2019-02-19 22:21发布

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

3条回答
地球回转人心会变
2楼-- · 2019-02-19 23:11

Make a sign of boolean in your postdelayed method. Init the sign as true,when the activity is finnished , set the value of sign as false.

查看更多
别忘想泡老子
3楼-- · 2019-02-19 23:12

You can use removeCallbacks(runnable) method of the handler using which you are calling postDelayed() method. For example, if you used:

mHandler.postDelayed(mRunnable, mTime)

for refreshing the activity, then use

mHandler.removeCallbacks(mRunnable)

in onPause() method of the activity.

查看更多
孤傲高冷的网名
4楼-- · 2019-02-19 23:20

You can use this piece of code to run after a 3 sec delay.

new Timer().schedule(new TimerTask() {          
    @Override
    public void run() {

        // run your code here    

    }
}, 3000);
查看更多
登录 后发表回答