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

Jon*_*ona 5 android android-layout

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

您是否预见到应用程序正在使用不同字体静态存储Typeface的任何可能的缺点或优点?


优点:

  • 加载一次到处使用.

缺点:

  • 使用更多堆?

我的"TypeFace"cacher:

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);
}
Run Code Online (Sandbox Code Playgroud)

Ric*_*ich 2

我就是这么做的,而且我从来没有遇到过相关的记忆问题。我创建了一个名为 FontProvider 的类,它延迟加载静态 Map,其中键是字符串常量,值是 Typeface 的实例。我通过 get(String key) 方法公开地图,如果该键不在地图中,该方法将返回 null。