如何使用ParseFile将ParseObject固定到OFFLINE中的解析本地数据存储区?

ash*_*jju 6 android parse-platform

我使用以下代码将ParseObject与ParseFile一起存储.我在Application子类中启用了Parse本地数据存储区.当应用程序连接到Internet时,此代码将ParseObject的实例存储在本地数据存储区和解析服务器中.

final ParseFile file = new ParseFile(position + ".mp4", data);
    file.saveInBackground(new SaveCallback() {

        @Override
        public void done(ParseException e) {
            ParseObject po = new ParseObject("Recordings");
            po.put("code", position);
            po.put("name", myname);
            po.put("file", file);
            po.saveEventually();                
        }
    });
Run Code Online (Sandbox Code Playgroud)

当应用未连接到互联网时,相同的代码会抛出以下异常.java.lang.IllegalStateException:无法编码未保存的ParseFile.应用程序崩溃了.对象未存储在本地数据存储中.

那么当没有互联网时,如何在解析本地数据存储区中存储带有ParseFile的ParseObject?

ash*_*jju 7

我通过简单地用ParseObject存储文件的字节来解决这个问题.当我想要我的文件时,我将这些字节写回文件.

我的要求是在解析中存储带有名字的录音文件.我按照以下步骤操作:1.获取文件的字节数组2.将字节数组放入ParseObject 3.调用ParseObject#saveEventually()

码:

    File file = new File(filePath);
    FileInputStream fis = null;
    try {
        fis = new FileInputStream(file);
        byte data[] = new byte[(int) file.length()];
        fis.read(data);

        ParseObject obj = new ParseObject("Recordings");
        obj.put("name", name);          
        obj.put("data", data);
        obj.saveEventually();
    } catch (IOException e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)