1

我已经阅读了大量关于写入 android 设备内部存储的文章,我需要一些帮助来弄清楚我做错了什么。在我的应用程序的主要活动中,我从存储在内部存储中的文件中读取一个值,如下所示:

string ID = GetID();

GetID 如下所示:

string GetID()
    {
        try 
        {
            using (var i = new StreamReader (OpenFileInput (FILENAME))) 
            {
                return i.ReadToEnd();
            }
        }   
        catch 
        {
            return "";
        }
    }

如果文件不存在,则返回 "" 并将用户发送到另一个活动进行注册。在那个活动中,我使用它来调用一个函数来写入内部存储,如下所示:

WriteID (uniqueID);

WriteID 如下所示:

void WriteID(string uniqueID)
    {
        using (var o = new StreamWriter (
            OpenFileOutput (FILENAME, FileCreationMode.Private)))
            o.Write (uniqueID);
    }

这对我来说很奇怪,如果我将这两个函数放在同一个活动中,写入文件然后调用函数从中读取,我会正确返回 uniqueID。但是,如果我停止应用程序然后重新启动它,我会抛出一个 File Not Found 异常,并且读取函数没有返回任何内容。但是,如果我创建一个新项目并使用相同的代码,一切都会按预期工作(创建并写入文件,然后重新启动数据仍然存在)。

所以我想有一些我已经更改的设置或我的原始应用程序中可能缺少的一些引用导致应用程序停止时内部存储文件被删除?

关于为什么这在我的测试应用程序中正常工作但在另一个应用程序中不能正常工作的任何想法?

4

0 回答 0