1. 程式人生 > >CoreLooper框架改動:為支援跨Looper析構Handler而做的幾處改動

CoreLooper框架改動:為支援跨Looper析構Handler而做的幾處改動

.對於呼叫了handler.Create()後的handler,CoreLooper基本可以保證Handler在原生looper在析構,但不是100%保證
 在驗證穩定性時可精心構造出此場景,由此CoreLooper保證Handler在跨looper析構時不會出現異常
 實際執行中跨looper析構handler的機率可忽略不計
 強烈建議使用者把清理操作放在OnDestroy()中就能保證不出現異常,OnDestroy()始終是在handler原生looper中呼叫的

.之前的設計是Handler可以在建構函式中呼叫SetTimer,KillTimer
 現在為了讓Handler和Looper更加統一,限制僅在Handler.OnCreate()裡面或者之後才能成功呼叫SetTimer
 postDelayedRunnable內部用到了SetTimer,所以也有這個限制

.handler.Destroy()之後,CoreLooper不再保證其timer和runnable的執行

 可能清除handler的所有timer和postDelayedRunnable