Android 中關(guān)于 Glide 的 SimpleTarget ViewTarget 和 CustomTarget CustomViewTarget 方法的理解

Glide4將SimpleTarget(自由使用Target)和ViewTarget(自定義View中使用Target)廢棄了,分別由CustomTarget和CustomViewTarget代替,原因:

  • 使用SimpleTarget不會(huì)強(qiáng)制要求實(shí)現(xiàn)onLoadCleared方法,容易造成顯示錯(cuò)亂或者奔潰問(wèn)題;
  • 使用ViewTarget也不強(qiáng)制要求實(shí)現(xiàn)onLoadCleared方法,也容易出問(wèn)題;即使實(shí)現(xiàn)了也要求必須要在onLoadCleared中調(diào)用super.onLoadCleared方法(使用者都容易忽略),否則還是會(huì)出問(wèn)題;
  • 使用CustomTarget則要求必須實(shí)現(xiàn)onLoadCleared方法;
  • 使用CustomViewTarget則不需要實(shí)現(xiàn)onLoadCleared(final的),而是要求必須實(shí)現(xiàn)onResourceCleared方法(在onLoadCleared方法中調(diào)用)。

總的來(lái)說(shuō)就是保證資源能夠得到正常釋放!

CustomTarget使用示例:

Glide.with(this)
        .asBitmap()
        .load(imagePath)
        .into(object : CustomTarget<Bitmap>(){
            override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
                imageView.setImageBitmap(resource)
            }
            override fun onLoadCleared(placeholder: Drawable?) {
                // this is called when imageView is cleared on lifecycle call or for
                // some other reason.
                // if you are referencing the bitmap somewhere else too other than this imageView
                // clear it here as you can no longer have the bitmap
            }
        })
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容