Android FileOutputStream方法';忽略';

Android FileOutputStream方法';忽略';,android,multithreading,fileoutputstream,Android,Multithreading,Fileoutputstream,我使用三个文件来存储本地数据,其中两个在应用启动时检查并远程更新(如果有新版本可用或文件尚不存在)。第三种是在应用程序运行时可以定期存储的用户数据 这三种方法都使用相同的方法保存文件: public boolean setLocalFile(String Filename, String FileText, Context con) { try { FileOutputStream fos = con.openFileOutput(Filename, Contex

我使用三个文件来存储本地数据,其中两个在应用启动时检查并远程更新(如果有新版本可用或文件尚不存在)。第三种是在应用程序运行时可以定期存储的用户数据

这三种方法都使用相同的方法保存文件:

    public boolean setLocalFile(String Filename, String FileText, Context con) {
    try {
        FileOutputStream fos = con.openFileOutput(Filename, Context.MODE_PRIVATE);
        fos.write(FileText.getBytes());
        fos.close();
        return true;
    } catch(Exception e) {
        handleError(e); // local method that simply does a System.out.println
        return false;
    }
}
现在第三个文件写得很好,但前两个(在启动时检查并写入)根本不写。在调试中,似乎完全跳过了setLocalFile方法,而没有引发异常或使应用程序崩溃,报告的唯一错误日志似乎是:

07-11 16:14:13.162: ERROR/AndroidRuntime(1882): ERROR: thread attach failed
07-11 16:14:18.882: ERROR/gralloc(62): [unregister] handle 0x3bfe40 still locked (state=40000001)
不幸的是,我在网上也没有找到任何有用的东西


这让我很困惑——我不知道为什么它没有写在这个特殊的案例中。有什么想法吗?

迟来的更新。。。给出发生此问题的代码可能不太实际,因为我怀疑实际上需要我所有的代码来全面检查它

我的变量名以大写字母开头,这主要是因为我在学习其他语言大约10年后才重新进入Java,所以我花了一段时间才重新开始使用Java,这并不漂亮,但如果它能带来不同,我会感到惊讶。尽管如此,还是要感谢大家的回应

问题的背景是,我决定将这些文件中的数据作为类对象处理。因此,Drafts对象将保存所有草稿文档,类构造函数将调用getLocalFile方法并将其本地存储在类中,允许我使用它(使用各种get/set类型方法),然后使用“commit”方法(调用setLocalFile)将其再次写入文件

有各种这样的类对象被调用,但每个数据文件的实例化对象从不超过一个。让我感到困惑的是,除了FS操作被忽略外,其他一切都正常工作。一旦我直接访问了这些文件(忽略了我编写的类包装器),问题就消失了

类包装器在应用程序的其他部分可以很好地工作,而这个问题只发生在应用程序的一个复杂而密集的部分

正如我所说的,我只是在长时间缺席之后才回到Java(很多事情已经改变了),但看看这个问题以及它是如何“解决”自己的,我猜这是某种形式的线程/内存问题——本质上我是从太多的对象访问FS,最终它决定不再玩了


正如我所说的,这个问题已经解决了,但是这个解决方案不允许我更优雅地包装数据对象,这让我感到很不舒服。如果有人提出可能的原因/解决方案,我很乐意尝试并报告,否则这个回答可能会帮助将来有类似问题的人-至少找到一个不雅观的解决方案…

如果您向我们展示了您调用它并跳过它的代码,这将更容易帮助…最突出的是大写的变量名…:(