您好,登錄后才能下訂單哦!
給出這么個場景
假設你要做一個計時器,點擊按鈕開始計時,再點擊按鈕重新開始計時
我這邊要使用postDelayed方法來對控件進行刷新顯示,也能達到計時效果
貼代碼
說一下
習慣上直接接postdelayed。。。。,然后第一次點擊計時沒問題,第二次就看起來好像計時加快了。。。
其實是這么個問題,如果那個handler不是成員變量,每次點擊都new一個handle,或者沒有將handler里面的線程給結束掉直接再new runnable里面執行代碼塊的話,就會多一條線程出來,對控件進行操作,其實每條線程對控件執行的間隔都是1秒,但由于是多個線程對控件進行操作,增加的次數多了,看起來就好像是計時加快了。
解決的辦法是保證只有一條存活的線程對控件進行操作,所以每次調用計時方法時,先將該handler里面的線程結束掉,再用新線程對控件進行操作,醬紫就沒問題了
結束掉線程的方法是這個
handler.removeCallbacks(runnable);
好,就這樣
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。