处理程序postDelayed不会延迟发布?

时间:2012-05-04 10:31:46

标签: android handler postdelayed

我想更改onBackPressed方法的某些值...我会覆盖它:

@Override
public void onBackPressed() {

            final Handler backHandler = new Handler();
            backHandler.postDelayed(new Runnable() {
                public void run() {
                    exitCount = 0;
                    Log.d("exitCount", "exitCount: " + exitCount);
                }
            }, Toast.LENGTH_SHORT);

}

但问题是处理程序立即发布......没有延迟。我在哪里做错了? 对不起,如果这是一个蹩脚的问题,我在Android上很新。提前谢谢。

3 个答案:

答案 0 :(得分:2)

这是因为Toast.LENGTH_SHORT值为零。尝试使用您选择的延迟值声明常量。见here

答案 1 :(得分:1)

使处理程序成为活动的一部分(或者如果不是UI线程则将消息发布到的线程的一部分),并使用毫秒延迟而不是Toast.LENGTH_SHORT,其值为零,因此它将立即发生。

public class SomeActivity extends Activity {
    private Handler mHandler = new Handler();

    @Override
    public void onBackPressed() {
        mHandler.postDelayed(new Runnable() {

            @Override
            public void run() {
                Log.d("tag", "Hello, Handler!");
            }
        }, 1000); // one second
    }
}

答案 2 :(得分:0)

使用belo代码我希望它能运作。

runOnUiThread(new Runnable() {

            @Override
            public void run() {
                backHandler.postDelayed(new Runnable() {
                public void run() {
                    exitCount = 0;
                    Log.d("exitCount", "exitCount: " + exitCount);
                }
            }, Toast.LENGTH_SHORT);
            }
        });