2016-03-12 4 views
2

Я хочу установить динамически автоматическую скорость прокрутки в WebView. В onCreate вызывается autoScroll (25) и удаляется, а затем вызывается autoScroll (300), но когда apk работает, скорость автоматического прокрутки равна 25, поэтому ранее называемая «mHandler.postDelayed» не удаляется. Как решить проблему?Android Удаленный обработчик postDelayed динамически

Handler mHandler; 
Runnable runnable; 
WebView wv; 

protected void onCreate(Bundle savedInstanceState) { 
    ... 
    autoScroll(25); 
    mHandler.removeCallbacks(runnable); 
    autoScroll(300); 
} 

public void autoScroll(final int speed){ 
    if(mHandler == null) { 
     mHandler = new Handler(); 
    } 
    wv.post(runnable = new Runnable() { 
     @Override 
     public void run() { 
      wv.scrollBy(0, 1); 
      mHandler.postDelayed(this, speed); 
     } 
    }); 
} 
+0

что это за решение? Как удалить обработчик ?? – AngelJanniee

ответ

1
mHandler.removeCallbacks(runnable); 

удалит только ожидающие сообщения Runnable г, которые находятся в очереди сообщений. Он не остановит уже запущенный поток. Вы должны явно остановить поток. Один из способов остановить этот поток - использовать логическую переменную в качестве флага и запустить ваш код внутри runnable на основе значения этого флага. Вы можете взять некоторые подсказки от https://stackoverflow.com/a/5844433/1320616

+0

спасибо ankit :) – ATES

Смежные вопросы