2013-10-25 101 views
0

你好我的应用程序我需要存储单个对象与几个领域。在这一刻它是这样保存的什么是最适合在android中存储对象的方法?

@Override 
    public Object onRetainNonConfigurationInstance() { 
     return UILApplication.advert; 
    } 

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Advert retainedAdvert = (Advert) getLastNonConfigurationInstance(); 
     if (retainedAdvert != null) { 
      UILApplication.advert = retainedAdvert; 
     } 
} 

其中UILApplication是singleton保持广告。有时(通常当摄像头)广告对象被删除为默认值。所以我想知道保存和有效的方法来克服这个对象。将它存储在文件/序列化中,还是为单个记录创建数据库或有更好的方法是明智的?

回答

1

从我的计算器摘自:在的onCreate

@SuppressWarnings("unchecked") 
private void loadState() { 
    ObjectInputStream ois; 
    try { 
     ois = new ObjectInputStream(openFileInput(FILE_STATE)); 
     state = ((State) ois.readObject()); 
     ois.close(); 

     ois = new ObjectInputStream(openFileInput(FILE_HISTORY)); 
     historyListAdapter.setItems((List<String>) ois.readObject()); 
     ois.close(); 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
     state = new State(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     state = new State(); 
    } catch (ClassNotFoundException e) { 
     Toast t = Toast.makeText(this, "Error parsing saved state", 
       Toast.LENGTH_SHORT); 
     t.show(); 
     state = new State(); 
    } 
    setState(state); 
} 

private void saveState() { 
    ObjectOutputStream oos; 
    try { 
     oos = new ObjectOutputStream(openFileOutput(FILE_STATE, 
       Context.MODE_PRIVATE)); 
     oos.writeObject(state); 
     oos.close(); 

     oos = new ObjectOutputStream(openFileOutput(FILE_HISTORY, 
       Context.MODE_PRIVATE)); 
     oos.writeObject(historyListAdapter.getItems()); 
     oos.close(); 

    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

@Override 
protected void onPause() { 
    saveState(); 
    super.onPause(); 
} 

呼叫LoadState的()()。

工作对我来说很好,我知道它不建议在android中使用java序列化,但我没有遇到任何错误或错误。性能也没有问题。

你当然应该根据你的应用调整错误处理。

相关问题