2011-05-18 67 views
1

我有一堆對象存儲在幾個文件中,我需要在我的應用程序的開始加載到內存中,這是我該如何做的:android/java:使用別的東西而不是ObjectInputStream來加載對象

FileInputStream fis = null; 
    ObjectInputStream ois = null; 
    Object result = null; 
    try { 
     fis = new FileInputStream(inFile); 
     ois = new ObjectInputStream(fis); 
     result = ois.readObject(); 
     //and then do something with result 

問題是,當我嘗試加載大小超過500k的對象(HashMap<Integer, int[]>)時,我的手機會永久存在。我不確定它是否是ObjectInputStream的問題,如果是,還有其他更快的方法來存儲和檢索文件中的對象嗎?越快越好,非常感謝。

回答

1

您可以使用Protocol Buffers或Android的本機序列號:Parcel

更新:

你爲什麼要儲存那麼多對象文件並加載它們都在同一時間到內存?當你發現它需要永久並且使用大量的內存。有什麼特別的理由你需要這個嗎?

您應該使用數據庫 - 它可以讓您有選擇性地查詢數據並只加載特定時間需要的對象。

+0

我看過包裹,看來它不適合存儲在一個文件中。 – user685275 2011-05-19 05:33:44

0

您是否試過將FileInputStream封裝到BufferedInputStream中?它最大限度地減少了與底層流的昂貴交互。

... 
ois = new ObjectInputStream(new BufferedInputStream(fis)); 
... 
相關問題