2017-03-04 68 views
0

我想在按下後退按鈕時停止處理的延遲/意圖。我搜索了一些線程,但我沒有相同的Handler邏輯。我很抱歉,如果是的話。Android - 處理程序 - 如何停止意圖?

這是我的工作代碼:

else { 

       new Handler().postDelayed(new Runnable() { 
        @Override 
        public void run() { 

         Intent intent = new Intent(MainActivity.this, PollWebView_Gilmore.class); 
         startActivity(intent); 
         finish(); 

        } 

       }, 10000); 
+0

如果您不需要延遲只是刪除處理程序,只保留意圖 –

+0

代碼是完美的,然後什麼問題呢?請解釋你的問題 –

+0

@AbhishekSingh - 我想取消用戶按下後的延遲/意圖。 –

回答

1

你必須保存到Handler和你Runnable地方都參照,然後你可以使用在HandlerremoveCallbacks(Runnable)方法取消待處理請求。

示例代碼:

public class MainActivity extends AppCompatActivity { 

    private Handler handler = new Handler(); 

    private Runnable runnable = new Runnable() { 
     @Override 
     public void run() { 
      Intent intent = new Intent(MainActivity.this, MainActivity.class); 
      startActivity(intent); 
      finish(); 
     } 
    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button button = (Button) findViewById(R.id.button); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       handler.postDelayed(runnable, 5000); 
      } 
     }); 
    } 

    @Override 
    public void onBackPressed() { 
     super.onBackPressed(); 
     handler.removeCallbacks(runnable); 
    } 

} 
+0

我該如何把「handler.removeCallbacks(runnable);」在onBackPressed()裏面? –

+0

我已經給我的答案添加了一個示例。 – zsmb13

+0

謝謝。我已經有了一個「onBackPressed();」的函數我應該只加這個嗎? –

0

如果你想要做背部pressed.You意圖東西可以覆蓋onBackPressed()方法。

+0

我該如何把「handler.removeCallbacks(runnable);」在onBackPressed()裏面? –

+0

@Override public void onBackPressed(){ super.onBackPressed(); handler.removeCallbacks(runnable); } – Jack

1

如果你不需要延遲你爲什麼使用Handler?只要刪除它!

調用此直接

Intent intent = new Intent(MainActivity.this, PollWebView_Gilmore.class); 
startActivity(intent); 
finish(); 

當按下後退按鈕!

你也可以通過閱讀下面的帖子得到一個想法。

Android: Proper Way to use onBackPressed() with Toast

How to run a Runnable thread in Android?

+0

我該如何把「handler.removeCallbacks(runnable);」在onBackPressed()裏面? –