Я играл с Runnable
и обнаружил, что если вы отправляете Delayed
a Runnable
на View
, то удаление обратного вызова выигрывает не работает, однако, если вы сделаете то же самое, но опубликуете Runnable
в Handler
, тогда удаление обратного вызова действительно сработает.
Почему это работает (Runnable
код run() никогда не выполняется):
Runnable runnable = new Runnable() {
@Override
public void run() {
// execute some code
}
};
Handler handler = new Handler();
handler.postDelayed(runnable, 10000);
handler.removeCallbacks(runnable);
где это не работает ( Runnable
код run() всегда выполняется)? :
Runnable runnable = new Runnable() {
@Override
public void run() {
// execute some code
}
};
View view = findViewById(R.id.some_view);
view.postDelayed(runnable, 10000);
view.removeCallbacks(runnable);