android - microSD 加载延迟导致首次加载时出现空值

标签 android file-io

我将各种用户帐户存储在保存在 microSD 卡文件中的自定义对象 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 上的数据,当我打开加载保存的各种配置文件的 Activity 时,第一次加载方法返回 null 并且这看起来是空的,如果我第二次尝试重新加载 Activity ,没问题。

有什么建议可以避免这个问题吗?

最佳答案

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

关于android - microSD 加载延迟导致首次加载时出现空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14033571/

相关文章:

python - 使用 python fileinput 模块时跳过第一行的优雅方法?

java - 将反转的十六进制字符串转换为十进制

android - 由于 Linux 中的 "Could not delete '/tesseract-android-tools/bin/classes/com',项目未构建

java - 解析 JSON 对象中的 JSON 对象

c# - 如何在 xamarin android 应用程序中使用动画?

matlab - 将元胞数组输出到 CSV 文件 (MATLAB)

c# - 如何强制 FileStream 文件的独占所有权

java - 编辑文件而不遍历整个字节缓冲区?

c# - C++ 中是否有 BinaryReader 来读取从 C# 中的 BinaryWriter 写入的数据?

android - 无法转换 hprof 转储