1. 程式人生 > >Glide異常:You cannot load start a load for a destory activity

Glide異常:You cannot load start a load for a destory activity

     使用glide載入圖片,在一個Activity中使用了glide載入圖片後,首次進入頁面顯示正常,退出二次進入崩潰,直接報引數異常:You cannot  start a load for on a destory activity。glide是統一封裝好的,在其他頁面都正常顯示,查看了程式碼,也沒發現問題。

    網上找了資料,給出了三個解答:

       1.將glide.with(context)中的context 改成application。我試了下,確實可以解決問題,本來就是context的問題,直接不用了,一般都能解決問題,但是這樣glide就無法與context同步生命週期,不利於資源釋放。

       2.確定glide載入圖片在主執行緒中,子執行緒時使用application。

       3.手動在activity銷燬時,取消glide請求。glide.with(context).pauserequest.

     

      經測試,專案中第二三種方法都不好使,還得自己認真研究下,還別說,還真發現了貓膩。

     專案中在Activity裡,建立了一個靜態例項,將context傳入,然後在該例項中呼叫了glide方法載入圖片。看到這裡,可能大家也發現問題了,靜態例項持有了context後不會釋放的(這是典型的記憶體洩漏問題)。二次進入頁面的時候,該例項沒有回收,context也沒有回收,呼叫glide時就會發現該context已被銷燬了。至於新的context,由於物件存在,將沒有傳遞進去好嗎。

     由此問題解決。

     後記:開發中很多問題都是由我們自身程式碼造成的,務必細緻再細緻。