У меня есть простой DataHolder
класс:
public class DataHolder
{
private static final DataHolder holder = new DataHolder();
Map<String, WeakReference<Object>> data = new HashMap<>();
public static DataHolder getInstance() {return holder;}
public void save(String id, Object object)
{
data.put(id, new WeakReference<>(object));
}
public Object retrieve(String id)
{
WeakReference<Object> objectWeakReference = data.get(id);
return objectWeakReference.get();
}
}
По сути, я хочу хранить некоторые данные для их извлечения где-либо еще (например, другое действие или фрагмент).
Для сохранения:
DataHoler.getInstance().save("list", myList);
Для извлечения данных:
List<MyObject> list = (ArrayList) DataHoler.getInstance().retrieve("list");
Мое намерение состоит в том, чтобы избежать передачи большого количества данных с помощью parcelable (этого следует избегать, перечислитеможет быть большим) + упростить доступ к данным между всеми действиями / фрагментами.
Правильный ли мой подход?Не уверен, не вызовет ли это неожиданное поведение или утечки памяти.