你必須保存到Handler
和你Runnable
地方都參照,然後你可以使用在Handler
的removeCallbacks(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);
}
}
如果您不需要延遲只是刪除處理程序,只保留意圖 –
代碼是完美的,然後什麼問題呢?請解釋你的問題 –
@AbhishekSingh - 我想取消用戶按下後的延遲/意圖。 –