我使用以下代码将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(); } });
当应用未连接到互联网时,相同的代码会抛出以下异常. java.lang.IllegalStateException:无法编码未保存的ParseFile.应用程序崩溃了.对象未存储在本地数据存储中.
那么当没有互联网时,如何在解析本地数据存储区中存储带有ParseFile的ParSEObject?
解决方法
我通过简单地用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(); }