microSD加载延迟会导致第一次加载时出现空值

时间:2012-12-25 19:52:36

标签: android file-io

我将各种用户帐户存储在保存在microSD卡上的文件中的自定义Object ArrayList 中,然后使用以下方法加载此文件:

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 ,这似乎是空的,如果我第二次尝试重新加载活动,没问题。

有任何建议可以避免这个问题吗?

1 个答案:

答案 0 :(得分:2)

延迟仅发生在将所有设备内存移至microSD的一些罕见的修改固件中。解决方案是返回稳定的固件或加载方法的两倍。