2013-12-09 48 views
1

凌空ImageLoader強制執行的請求應該從主UI線程啓動:從主UI線程以外的線程調用Volley是否安全?

public ImageContainer get(String requestUrl, ImageListener imageListener, 
     int maxWidth, int maxHeight) { 
    // only fulfill requests that were initiated from the main thread. 
    throwIfNotOnMainThread(); 

我認爲這是保證響應回調發生在主UI線程上,大概是因爲有一個假設,即主叫將想要更新回調中的用戶界面。

但是,我想在我的GCM通知處理中使用Volley,它只需要發送PendingIntent,而不是直接更新UI。我想知道在這種特殊情況下刪除throwIfNotOnMainThread()是否安全。我懷疑這是否安全,但我想知道爲什麼有人能給出一個很好的理由?

(僅供參考,它看起來像RequestQueue已經同步到mCurrentRequests訪問,所以似乎裏面凌空請求隊列內部鎖定。)

回答

0

我不會建議去除保護,因爲在一般使用ImageContainer的情況確實會改變用戶界面。

一個更好的方法IMO將使用RequestQueue直接與自定義請求並按照你想要的方式處理它。