动态切换字体过程中内存占用不断增加的解决办法
来源:互联网 发布:淘宝进货技巧 编辑:程序博客网 时间:2024/06/07 18:26
动态切换字体过程中内存占用不断增加的解决办法
[DESCRIPTION]
按照如下原DMS文档(现已更新),实现了切换字体功能
Font Install and Runtime Change On ICS guideline.doc
按照参考文档完成此feature之后,发现不断在不同字体之间切换,手机内存占用会不断增加
这是因为typeface的createFromAsset接口有BUG,每调用一次该接口,native memory占用就会增加,这个问题属于Google
Bug,目前尚无完美的解决方案,但是可以使用下面的方法work around.
[SOLUTION]
1.修改framework中的typeface.JAVA文件
增加以下代码:
import java.util.Hashtable;
private static final String TAG = "Typefaces";
private static final Hashtable<String, Typeface> cache = new Hashtable<String, Typeface>();
public static Typeface get(AssetManager mgr, String assetPath) {
synchronized (cache) {
if (!cache.containsKey(assetPath)) {
try {
Typeface t = Typeface.createFromAsset(mgr,assetPath);
cache.put(assetPath, t);
} catch (Exception e) {
return null;
}
}
return cache.get(assetPath);
}
}
2.修改Textview.java,
将Typeface.createFromAsset(...)替换成新加的Typeface.get(...)接口
根据我司提供的文档,需要修改的地方有2处,分别在textview构造函数,与setTextAppearance函数中
.
按照如下原DMS文档(现已更新),实现了切换字体功能
Font Install and Runtime Change On ICS guideline.doc
按照参考文档完成此feature之后,发现不断在不同字体之间切换,手机内存占用会不断增加
这是因为typeface的createFromAsset接口有BUG,每调用一次该接口,native memory占用就会增加,这个问题属于Google
Bug,目前尚无完美的解决方案,但是可以使用下面的方法work around.
[SOLUTION]
1.修改framework中的typeface.JAVA文件
增加以下代码:
import java.util.Hashtable;
private static final String TAG = "Typefaces";
private static final Hashtable<String, Typeface> cache = new Hashtable<String, Typeface>();
public static Typeface get(AssetManager mgr, String assetPath) {
synchronized (cache) {
if (!cache.containsKey(assetPath)) {
try {
Typeface t = Typeface.createFromAsset(mgr,assetPath);
cache.put(assetPath, t);
} catch (Exception e) {
return null;
}
}
return cache.get(assetPath);
}
}
2.修改Textview.java,
将Typeface.createFromAsset(...)替换成新加的Typeface.get(...)接口
根据我司提供的文档,需要修改的地方有2处,分别在textview构造函数,与setTextAppearance函数中
.
0 0
- 动态切换字体过程中内存占用不断增加的解决办法
- 内存使用率不断增加的原因之一
- fragment不断切换app崩溃的解决办法
- cocos2dx 中切换场景内存占用过高的处理
- 如何在程序中找到何处在不断占用内存
- 解决 WordPress 占用内存不断上升的问题
- Linux中Cache内存占用过高解决办法
- XPDF源码调试过程中字体问题的解决办法
- 关于VC中CListControl的不断插入和删除后内存不减的解决办法。
- VC串口控件编程,解决内存不断增加的问题
- VC串口控件编程,解决内存不断增加的问题
- SQL SERVER的内存会不断增加,问题分析
- SQL SERVER的内存会不断增加,问题分析
- SQL SERVER的内存不断增加问题分析
- SQL SERVER的内存不断增加问题分析
- SQL SERVER的内存会不断增加,问题分析
- VC++使用gdi+画图导致内存不断增加的问题
- C#内存占用大量资源的解决办法
- 基础总结篇之二:Activity的四种launchMode
- AFNetworking原理及常用操作
- android获取内存信息
- matlab解方程、方程组
- NC列表界面能监听列表界面鼠标所选数据变化
- 动态切换字体过程中内存占用不断增加的解决办法
- C语言基础 预处理器-应用define定义变量
- RAC节点丢失且被强制改成单节点后,重新改造成RAC的步骤
- Spring AOP 实现功能权限校验功能
- The certificate used to sign "XXX" has either expired or has been revoked
- iOS 真机 Log日志
- swiper的基础使用(七)
- solr之模糊搜索(Fuzzy matching)
- loadrunner关联及web_reg_save_param方法浅析