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,由於對象存在,將沒有傳遞進去好嗎。

     由此問題解決。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章