我一直在寻找提高我的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)方法公开 map ,如果该键不在 map 中,则该方法返回null。

    关于android - 优点和缺点,保持对Typeface的静态引用以便在布局中重复使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9998529/

    10-10 01:49