android載入字型記憶體流失的處理方法

來源:互聯網
上載者:User

標籤:android   style   blog   io   ar   color   使用   sp   on   

在開發android app的開發過程中,會使用到外部的一些字型。外部字型在載入的時候,容易造成記憶體流失。

比如:

Typeface tf=Typeface.createFromAsset(getAssets(), Consts.LANTING_FONT_PATH);title.setTypeface(tf);

如果在每次調用的時候都這樣寫,會造成每次執行的時候都會重新載入一次該字型,導致記憶體不斷變大。

跑monkey測試的時候,執行:

adb shell  dumpsys meminfo 【packgename】  

此命令會打出當前應用記憶體佔用情況,如下:

** MEMINFO in pid 26390 [packgemane] **                   Pss  Private  Private  Swapped     Heap     Heap     Heap                 Total    Dirty    Clean    Dirty     Size    Alloc     Free                ------   ------   ------   ------   ------   ------   ------  Native Heap        0        0        0        0    24372    23593      758  Dalvik Heap    30256    30020        0        0    39116    34608     4508 Dalvik Other     2254     2180        0        0        Stack      132      132        0        0       Cursor        8        8        0        0    Other dev        4        0        4        0     .so mmap      998      816       12        0    .apk mmap     1795        0     1636        0    .ttf mmap      115        0       76        0    .dex mmap     1215       56      980        0   Other mmap      406        4       88        0      Unknown    22295    22292        0        0        TOTAL    59478    55508     2796        0    63488    58201     5266 Objects               Views:      840         ViewRootImpl:        7         AppContexts:        6           Activities:        4              Assets:       39        AssetManagers:       39       Local Binders:       47        Proxy Binders:       29    Death Recipients:        0     OpenSSL Sockets:        0 SQL         MEMORY_USED:      296  PAGECACHE_OVERFLOW:      136          MALLOC_SIZE:       62 DATABASES      pgsz     dbsz   Lookaside(b)          cache  Dbname         4      116             80        28/19/5  /××××××4       16            110         9/18/4  /×××××× Asset Allocations    zip:/system/app/×××××.apk:/assets/fonts/Roboto-Light.ttf: 366K    zip:/system/app/×××××.apk:/assets/fonts/Lantinghei.TTF: 2344K    zip:/system/app/×××××.apk:/assets/fonts/CoreSansM25ExtraLight.ttf: 210K    zip:/system/app/×××××.apk:/assets/fonts/CoreSansM25ExtraLight.ttf: 210K    ...  ...   ...    zip:/system/app/×××××.apk:/assets/fonts/CoreSansM25ExtraLight.ttf: 210K

從日誌可以看出CoreSansM25ExtraLight這個字型被載入了多次,導致記憶體流失。

如和解決字型記憶體流失呢?方法很簡單:

將字型定義為常量,僅在oncreate方法中進行初始化即可。

Consts.TF_CORESANS_FONT  =  Typeface.createFromAsset(getAssets(), Consts.CORESANS_FONT_PATH);

 

android載入字型記憶體流失的處理方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.