В своей деятельности я хочу использовать метод onRetainNonConfigurationInstance для хранения некоторых данных, загруженных в упражнении (без просмотров). Это должно ускорить загрузку и поддерживать постоянное состояние при изменении ориентации.
Поскольку возвращаемый аргумент - один объект, и я хочу вернуть два элемента, я нашел следующее решение:
@Override
public Object onRetainNonConfigurationInstance() {
HashMap< String, Object> data = new HashMap<String, Object>();
data.put( "mAdapter", getExpandableListAdapter() );
data.put( "folderList", folderList );
return data;
}
Когда я собираю данные в моем методе onCreate с помощью:
HashMap<String, Object> savedData = ( HashMap< String, Object> ) getLastNonConfigurationInstance();
Я получаю непроверенное предупреждение о приведении от компилятора. Я предполагаю, что это потому, что компилятор не может определить, действительно ли HashMap с указанными типами будет в объекте, возвращаемом getLastNonConfigurationInstance. Затем я приведу Объекты в HashMap к нужным типам данных. У меня вопрос такой:
Является ли это безопасным способом передачи нескольких фрагментов данных в операцию onCreate, когда я знаю, что данные будут возвращены в виде HashMap (потому что я их там хранил)?
Я думаю, что могу подавить предупреждение с помощью @SuppressWarnings ("unchecked"), но я хочу быть уверенным, что мой код действителен.
С уважением,
Ivo