2012-12-25 35 views
2

空值I存儲在自定義對象的ArrayList保存在SD卡上的文件不同的用戶帳戶,我加載此文件與後續的方法:延遲的microSD的負載導致第一次加載

public static ArrayList<User> loadAllUsers() { 
     if (storageAvailable()) { 
      ArrayList<User> myList = new ArrayList<User>(); 
      try { 
       FileInputStream myListUsersSaved = new FileInputStream(baseDir 
         + File.separator + fileName); 

       ObjectInputStream myListUsers = new ObjectInputStream(
         myListUsersSaved); 

       myList = (ArrayList<User>) myListUsers.readObject(); 

       myListUsers.close(); 

      } catch (Exception exc) { 
       exc.printStackTrace(); 
      } 

      return myList; 
     } else { 
      return null; 
     } 

    } 

這通常工作正常,但不幸的是,在一些慢速設備中,第一次加載嘗試失敗,可能是由於延遲訪問microSD上的數據,並且當我打開加載各種配置文件的活動時,第一次該方法返回null這似乎是空的,如果我嘗試第二次重新加載活動,沒問題。

任何建議,以避免這個問題?

+0

您可能不應該將帳戶詳細信息存儲在外部存儲器上,因爲這不僅僅存在於您發現的不可靠信息中,而且可以通過系統上的任何其他應用程序閱讀甚至修改。 –

+0

@ChrisStratton你是對的,但是文件中保存的不是明智的數據,而只是一些緩存的信息。 – Silverstorm

+0

@Sivlerstorm - 它仍然可能是錯誤的位置。或者你在談論很多兆字節的信息? –

回答

2

延遲只發生在一些罕見的改裝固件中,將所有設備內存移到microSD。解決方法是返回到穩定的固件或加載兩倍的方法。

+0

如果你的意思是說「內部」存儲是以外部結束的,那麼可能會有問題。但是,如果您應該使用內部存儲,請將其與使用外部存儲分開。 –