好的,这个烦人的问题可能很熟悉,但我不知道它叫什么以及如何解决它。当我打开我的应用程序并转到菜单时,一段时间后,当我恢复应用程序时,我丢失了所有数据。看来 android 喜欢清理数据以保持操作系统尽可能快和稳定。在恢复应用程序之前,当清除任何类型的变量/为空时,建议使用哪种方法将数据保存在内部存储器中并将其取回?我尝试 setSharedPreferences 将 ArrayList 解析为 Object 并将 Object 解析为 String 以保存数据并检索它,但我得到 cannot parse Object to String 异常。必须有更好的选择。
任何帮助将不胜感激。
编辑:
这就是我检索和存储数据的方式:
JSONObject data = (JSONObject) new JSONTokener(result).nextValue();
Helper.RAW_PEOPLE_INFO = data.getJSONArray("people");
Helper.PEOPLE_CONTAINER = new ArrayList<PeopleInfoStorage>();
for( int i = 0; i < Helper.RAW_PEOPLE_INFO.length(); i++ ){
Helper.PEOPLE_CONTAINER.add( new PeopleInfoStorage(Helper.RAW_PEOPLE_INFO.getJSONObject(i)) );
}
我使用 PEOPLE_CONTAINER ArrayList 稍后在需要时使用它。在我恢复我的应用程序之前,PEOPLE_CONTAINER ArrayList 可能会被清理,所以有人可以帮我举例说明如何将此 ArrayList 存储在内部存储器中,以便我可以从内部存储器中检索数据并将其放回 PEOPLE_CONTAINER ArrayList 以供何时使用它再次为空。
它需要是这样的:
@Override
protected void onPause() {
if( Helper.PEOPLE_CONTAINER != null ){
//save the Helper.PEOPLE_CONTAINER ArrayList to the internal memory
}
super.onPause();
}
@Override
protected void onResume() {
if( Helper.PEOPLE_CONTAINER == null ){
//retrieve the data and store it back to Helper.PEOPLE_CONTAINER ArrayList
}
super.onResume();
}