2012-04-03 4 views
5

私はいつも私のAndroid開発スキルを向上させる方法を探しています...だからこの質問。レイアウト全体で再利用できるように、書体に対する静的な参照を保持していますか?

Appで使用されているように、異なるフォントのために静的に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); 
} 

答えて

2

私はまさにそれを行う、と私は、関連するメモリの問題があったことがありません。私はFontProviderというクラスを作成しました。このクラスは、キーが文字列定数で、値がTypefaceのインスタンスである静的Mapを遅延ロードします。キーがマップにない場合はnullを返すget(String key)メソッドを通じてマップを公開します。

+0

私はその考えが好きです!うん、私は間違いなく、追加のメモリについてあまり心配しないだろう - それは心配するのに十分な差があることは本当に疑わしい、と本当に利便性はとにかくそれの価値がある。 – kcoppock

+0

あなたの答えをありがとう。ええ、私はエーテル問題を思いついたことはありません。私は、Typefaceオブジェクトを再利用することで、テキストで奇妙なことが起きる可能性があることを心配していました。 – Jona

+0

この投稿にはもう答えがありません。私はすでにRichが提案したことをやっていたが、私はこれを私の答えにしている。 – Jona

関連する問題