Android字体占有内存,android加载字体内存泄漏的处理方法

在开发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 Heap0 0 0 0 24372 23593 758Dalvik Heap30256 30020 0 0 39116 34608 4508Dalvik Other2254 2180 0 0Stack132 132 0 0Cursor8 8 0 0Other dev4 0 4 0.so mmap998 816 12 0.apk mmap1795 0 1636 0.ttf mmap115 0 76 0.dex mmap1215 56 980 0Other mmap406 4 88 0Unknown22295 22292 0 0TOTAL59478 55508 2796 0 63488 58201 5266Objects

Views:840 ViewRootImpl: 7AppContexts:6 Activities: 4Assets:39 AssetManagers: 39Local Binders:47 Proxy Binders: 29Death Recipients:0OpenSSL Sockets:0SQL

MEMORY_USED:296PAGECACHE_OVERFLOW:136 MALLOC_SIZE: 62DATABASES

pgsz dbsz Lookaside(b) cache Dbname4 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);

原文:http://www.cnblogs.com/xiajf/p/4138464.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值