优点和缺点,保留对字体的静态引用以便跨布局重用?



我一直在寻找提高我的Android开发技能的方法。。。因此产生了这个问题。

你预见到在应用程序使用不同字体时静态存储Typeface的可能利弊吗?


优点:

  • 加载一次,随处使用

缺点:

  • 使用了更多堆

我的"TypeFace"缓存:

public static synchronized Typeface getFontType (String fontFile)
{
    if (!smTypefaces.contains(fontFile)) {
        try {
            Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/"+fontFile);
            if (null != tf) {
                // todo use maybe a weak reference?
                smTypefaces.put(fontFile, tf);
            }
        } catch (RuntimeException e) {
            e.printStackTrace();
        }
    }
    return smTypefaces.get(fontFile);
}

我就是这么做的,而且我从未遇到过相关的内存问题。我创建了一个名为FontProvider的类,该类惰性地加载一个静态Map,其中键是字符串常量,值是Typeface的实例。我通过get(String-key)方法公开映射,如果键不在映射中,该方法将返回null。

最新更新