魅族note(電信版)縮略圖顯示不正確問題

魅族note(電信版)縮略圖顯示不正確問題
android

【問題現象】數據庫

     問題現象:函數

          圖片縮略圖顯示存在多處重複,展現縮略圖與本來應該展現的圖片不相同。測試

                  

     期待結果:spa

          展現縮略圖與本來應該展現的圖片相同,不會出現重複的現象。blog

【涉及機型】圖片

          廠商:Meizuget

          機型:M463C源碼

         SDKAndroid4.4.4編譯

         ROMFlyme OS 4.2Q

         基帶:.1.0.2.c1-00096-M8936FAAAANVZM-1

【問題分析】:ROM問題

         問題API:

                   

         首先,咱們反編譯問題機型framework層代碼,發現getThumbnail()函數已經被更改。因爲反編譯源碼,代碼結構被混淆,暫時沒法正確解析源碼。

         可是,咱們經過對android原生SDK的分析,咱們瞭解到getThumbnail()獲取縮略圖主要是兩種方式,MICRO_KIND方式是縮略圖管理器中獲取縮略圖;MINI_KIND方式是從數據庫中讀取文件路徑而後壓縮原圖片獲得縮略圖。具體原生android framework層源碼以下:

 

                   

                   

                   

                  

                 

         而咱們的問題API剛好是要求採用MICRO_KIND方式來獲取縮略圖。適配問題的緣由也比較明瞭:廠家修改framework層源碼使得thumFile縮略圖管理器數據維護不當,從而致使縮略圖獲取不正確。

【解決方案/規避方案】

         1.首先分析兩種獲取縮略圖的方式:

                  MICRO_KIND方式:先嚐試從縮略圖數據庫中搜索圖片,若是不存在對應的縮略圖,則直接找到原圖片路徑,讀取原圖片,轉換爲縮略圖大小。

                  MINI_KIND方式:直接找到原圖片路徑,讀取原圖片,轉換爲縮略圖大小。

         2.這樣一來,咱們知道MINI_KIND方式是不會致使縮略圖對應錯誤的問題。因此咱們適配解決方案也十分明顯:在問題機型上,咱們建議使用MINI_KIND方式讀取縮略圖。

         解決方案:

                   

         3.測試該解決方案:

         Demo測試解決方案:(適配前,大部分的照片對應的縮略圖都是同一個縮略圖,縮略圖與原圖片不匹配)

                   

         Demo測試解決方案:(適配後,縮略圖顯示正常,縮略圖與原圖片匹配)

                   

// 若是以爲不錯,記得頂我哦! 頂我!頂我!頂我!