多次使用postDelayed方法導(dǎo)致計時加快問題

原文鏈接
http://guo2android.blog.51cto.com/10476685/1735396
博客遷移

給出這么個場景

假設(shè)你要做一個計時器,點擊按鈕開始計時,再點擊按鈕重新開始計時
我這邊要使用postDelayed方法來對控件進(jìn)行刷新顯示,也能達(dá)到計時效果

貼代碼

代碼塊

說一下
習(xí)慣上直接接postdelayed。。。。,然后第一次點擊計時沒問題,第二次就看起來好像計時加快了。。。
其實是這么個問題,如果那個handler不是成員變量,每次點擊都new一個handle,或者沒有將handler里面的線程給結(jié)束掉直接再new runnable里面執(zhí)行代碼塊的話,就會多一條線程出來,對控件進(jìn)行操作,其實每條線程對控件執(zhí)行的間隔都是1秒,但由于是多個線程對控件進(jìn)行操作,增加的次數(shù)多了,看起來就好像是計時加快了。
解決的辦法是保證只有一條存活的線程對控件進(jìn)行操作,所以每次調(diào)用計時方法時,先將該handler里面的線程結(jié)束掉,再用新線程對控件進(jìn)行操作,醬紫就沒問題了
結(jié)束掉線程的方法是這個

handler.removeCallbacks(runnable);

好,就這樣

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,765評論 25 709
  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,295評論 0 17
  • 異步消息處理線程啟動后會進(jìn)入一個無限的循環(huán)體之中,每循環(huán)一次,從其內(nèi)部的消息隊列中取出一個消息,然后回調(diào)相應(yīng)的消息...
    cxm11閱讀 6,522評論 2 39
  • 蘇格蘭游記6:亞瑟王座 亞瑟王座是愛丁堡的一座小山丘,市民散步鍛煉身體的好去處。這里也是ONE DAY的取景地。 ...
    巴巴巴布布閱讀 1,151評論 0 1
  • 001 自從他參加完“廚神大賽”,得了一個“廚神”的頭銜,店里的生意就變的格外的好。 不管是什么樣...
    墨客聞人閱讀 231評論 0 0

友情鏈接更多精彩內(nèi)容