Tak, jest to bardzo dobry pomysł, tylko przy pierwszym uruchomieniu aplikacja wygeneruje obrazy dla danego rozmiaru ekranu urządzenia z svg i zapisze je w pamięci podręcznej i używaj ich cały czas po tym. Oszczędza dużo procesora, szybsze ładowanie interfejsu użytkownika.
Zalecam jednak zapisywanie plików pamięci podręcznej o nazwach zawierających wersję aplikacji. Jeśli wydasz aktualizację (np. Wersję 2) z różnymi obrazami svg, zamiast starych plików będą używane nowe pliki o różnych nazwach.
Zwykle OK, aby użyć do 10 MB w Context.getCacheDir()
, system wyczyści ten folder, gdy będzie mało pamięci.
Poza tym za każdym razem, gdy inicjalizujesz klasę Cache
, możesz trochę wyczyścić, tzn. Usunąć starą wersję lub nie wymaga elementów.
Oto klasa Najczęściej po prostu zapisać i uzyskać Serializable obiektu z App katalogu pamięci podręcznej:
public class ObjectCacheFile<T> {
private final File mFile;
public ObjectCacheFile(Context context, String name) {
mFile = new File(context.getCacheDir(), name);
}
public File getFile() {
return mFile;
}
public void put(T o) {
try {
if (!mFile.exists()) {
mFile.createNewFile();
}
FileOutputStream fos = new FileOutputStream(mFile);
ObjectOutputStream objOut = new ObjectOutputStream(fos);
try {
objOut.writeObject(o);
} finally {
objOut.close();
}
} catch (IOException e) {
Log.e(App.getLogTag(this), "error saving cache file", e);
}
}
@SuppressWarnings("unchecked")
public T get() {
if (!mFile.exists()) {
return null;
}
try {
ObjectInputStream objIn = new ObjectInputStream(new FileInputStream(mFile));
try {
return (T) objIn.readObject();
} finally {
objIn.close();
}
} catch (IOException e) {
Log.e(App.getLogTag(this), "error reading cache file", e);
} catch (ClassNotFoundException e1) {
Log.e(App.getLogTag(this), "cache file corrupted, deleting", e1);
mFile.delete();
}
return null;
}
}
Dzięki. Właściwie nie przechowuję pamięci podręcznej w pliku. Używam pamięci RAM! Czy to nadal dobry pomysł? –
@Seraphim Korzystanie z pamięci podręcznej w pamięci RAM? możesz po prostu zapisać zmienną. Pamięć podręczna jest o wiele bardziej przydatna podczas przechowywania elementów na dysku. –
czy są zalety ponownego użycia tego samego PictureDrawable w kilku miejscach w mojej aplikacji? –