Glide中request的呼叫和管理

2021-08-07 07:47:16 字數 1482 閱讀 5786

先介紹乙個資料結構weakhashmap

weakhashmap大致上就是,通過weakreference和referencequeue實現的。

weakhashmap是通過陣列table儲存entry(鍵值對),entry繼承weakreference,最終繼承reference

weakhashmap還有referencequeue,是乙個佇列,它會儲存被gc**的「弱鍵」。

問題:如何自動刪除entry的?

裡面有個函式expungestaleentries。就是從referencequeue取出資料,然後找到在table中的位置,然後刪除,也就是所謂的同步

glide的into函式

public

> y into(@nonnull y target)

request previous = target.getrequest();

if (previous != null)

requestoptions.lock();

request request = buildrequest(target);

target.setrequest(request);

requestmanager.track(target, request);///

return target;

}void track(target<?> target, request request)

public

void

begin() else

if ((status == status.running || status == status.waiting_for_size)

&& cannotifystatuschanged())

......

}public

void

onsizeready(int width, int height)

public

loadstatus load(/****/)

private

void

switch (runreason)

}

@override

public resourcedecode(datatype source, int width, int height, options options)

throws ioexception

}

decode那句,找到實現方法bytebufferbitmapdecoder.decode。一直搜尋下去,會看到熟悉的

bitmapfactory.decodestream(is, null, options);

就是最終的實現(一直要往裡面搜尋好幾層呢)

總結:管理靠的是weakhashmap,呼叫看的是enginejob,執行看的是decodejob

JSP中的request物件

jsp中的request物件 佟強 2008.10.9 request物件實現了httpservletrequest介面,通過它可以獲得使用者的請求引數,獲得cookie,獲得http請求頭,獲得使用者的ip位址等等。request物件的主要方法有 getparameter string name ...

kernel中的函式 request

下圖為示意圖,讀者可以參考該圖來閱讀 個人認為對linux下i o資源的管理如掌握 request region函式就能掌握其精髓。linux下對i o資源主要用結構體resource來管理,管理的方法就是用resource來描述使用的i o資源的狀態,並將這些resource用如下兩個resour...

django 中的 request 物件

我們知道當urlconf檔案匹配到使用者輸入的路徑後,會呼叫對應的view函式,並將httprequest物件作為第乙個引數傳入該函式。django 每乙個view函式的第乙個引數都是request,有沒想過request裡面到底有什麼呢?django使用request和response物件在系統間...