2012-04-03 7 views
5

Zawsze szukam sposobów na poprawę moich umiejętności programistycznych Androida ... Stąd to pytanie.Plusy i minusy, utrzymywanie stałych odniesień do czcionki w celu ponownego użycia w różnych układach?

Czy przewiduje się ewentualne zalety lub zalety dotyczące statycznego przechowywania kroju czcionki dla różnych czcionek, ponieważ są one używane przez aplikację?


Plusy:

  • obciążenia raz używać wszędzie.

Wady:

  • Więcej kupie używane?

Mój "krój pisma" 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); 
} 

Odpowiedz

2

robię dokładnie to, i nigdy nie miałem podobnych problemów pamięci. Stworzyłem klasę o nazwie FontProvider, która leniwizuje statyczną mapę, gdzie klucz jest stałą łańcuchową, a wartość jest instancją Kroju czcionki. Ujawniam mapę za pomocą metody get (String key), która zwraca null, jeśli klucz nie znajduje się na mapie.

+0

Podoba mi się ten pomysł! Tak, na pewno nie martwiłbym się zbytnio dodatkową pamięcią - naprawdę wątpię, że to dość znacząca różnica, o którą trzeba się martwić, a tak naprawdę wygoda i tak jest tego warta. – kcoppock

+0

Dzięki za odpowiedź. Tak, nie miałem żadnych problemów z pamięcią eterem. Obawiałem się, że ponowne użycie obiektu Krój czcionki może spowodować dziwne zdarzenie z tekstem. – Jona

+0

No więcej odpowiedzi na ten post. Już robiłem to, co Rich zasugerował, ale robię to moja odpowiedź. – Jona

Powiązane problemy