2014-06-17 56 views
0

我想跟蹤User對象上的Android應用商店的用戶數據,我想從性能,內存方面知道哪個更好。哪個更好的序列化,反序列化或靜態對象

1-序列化User對象,然後每次需要時反序列化用戶對象。

public static void writeObject(Context context, String key, Object object) 
     throws IOException { 
    FileOutputStream fos = context 
      .openFileOutput(key, Context.MODE_PRIVATE); 
    ObjectOutputStream oos = new ObjectOutputStream(fos); 
    oos.writeObject(object); 
    oos.close(); 
    fos.close(); 
} 

public static Object readObject(Context context, String key) { 
    try { 
     FileInputStream fis = context.openFileInput(key); 
     ObjectInputStream ois = new ObjectInputStream(fis); 
     Object object = ois.readObject(); 
     return object; 
    } catch (IOException ioe) { 
     ioe.printStackTrace(); 
    } catch (ClassNotFoundException ex) { 
     ex.printStackTrace(); 
    } 
    return null; 
} 
  • IS 命中的表現?

如果是的話,那麼使用靜態對象來跟蹤用戶數據扔掉所有的應用程序會更好,或者有跟蹤用戶數據全部丟Android應用另一首選方法。

任何指導將不勝感激。

回答

0

首先,在Android中,最好使用Parcelable比系列化

不要使用靜態對象,除非你確信你會能夠保持它,而不是讓他們在聚會內存超過他們應該

如果對象是簡單,並沒有太大隻是把它作爲parcelable ..如果它太大了,它保存到本地的文件或東西的數據庫,然後加載它,無論你想用它

0

序列化用於保存磁盤上的對象狀態。並且在許多情況下很有用。 讓我們來舉一個簡單的例子,一個遊戲,你玩遊戲,清除3級,關閉它,當你再次開始時,它從3級開始。

這不能用靜態對象來實現。因爲當遊戲關閉時,JVM退出,靜態對象將失去值。

這裏序列化出現在圖片中,當遊戲開始時,值被讀取並賦值。

現在,如果您的應用程序不使用此功能,請使用靜態對象,因爲序列化/ dfeserialization確實會影響性能。

0

做序列化,反序列化,你將限制你的應用程序添加新的數據來存儲用戶信息。您應該以定義的格式保存用戶信息以避免此問題。

另外,您的應用程序一次只能由單個用戶使用,因此考慮到性能問題僅值得閱讀前一個用戶。

0

序列化和反序列化太慢。如果你可以維護靜態對象中的信息,這是更好的方法。僅在應用程序關閉時需要保存數據時才使用序列化。

此外,您可以使用共享首選項來保存一些簡單的字典數據。