1. 程式人生 > >view.post執行時機以及可能產生的記憶體洩露問題

view.post執行時機以及可能產生的記憶體洩露問題

兩篇主要博文:

這一篇詳細講解了view.post方法的呼叫流程,以及在該方法中獲取view的寬高的例項分析

這一篇講解了view.post的執行時機,不同的時機得到的效果不一樣,總體來說就是當view已經attach到window的時候,view的post和handler的post是一致的,都是通過handler來進行訊息分發,而但view未attach到window的時候,就是走的另外的訊息機制.這種情況下就有可能產生記憶體洩露.

具體的區別就是在post方法中做的判斷:

public boolean post(Runnable action) {
        final AttachInfo attachInfo = mAttachInfo;
        if (attachInfo != null) {
            return attachInfo.mHandler.post(action);
        }
        // Assume that post will succeed later
        ViewRootImpl.getRunQueue().post(action);
        return true;
    }