2012-05-04 61 views
1

我想改變onBackPressed方法的一些價值觀......我重寫它是這樣的:Handler postDelayed不會延遲發佈?

@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。提前致謝。

回答

2

這是因爲Toast.LENGTH_SHORT值爲零。嘗試用你選擇的延遲值來聲明你的常量。請參閱here

+0

但我需要它延遲完全Toast.LENGTH_SHORT你知道毫米是多少? – yahya

+0

通過嘗試一些:)找到它2000毫秒的工作就好:)非常感謝。 – yahya

+0

2秒我想。但它可能會隨着android的實現而改變 – Blackbelt

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 
    } 
} 
0

使用貝洛碼我希望它能正常工作。

runOnUiThread(new Runnable() { 

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