2016-08-23 43 views
0

我有一个领域文件在我的资源原始文件夹中。我能够读取对象,修改它们,并将它们保存到该会话中。但是当我开始一个新的会话时,数据并不反映我的任何变化。我不会在任何时候调用Realm.deleteRealmFile()或Realm.clear()。领域数据不在会话之间持续

public class MyDb { 

private Realm realm; 
private RealmConfiguration config0; 
private Context context; 

public MyDb(Context context) { 
    this.context = context; 

    copyBundledRealmFile(context.getResources().openRawResource(R.raw.default0),"default0"); 
    config0 = new RealmConfiguration.Builder(context) 
      .name("default0") 
      .build(); 

    realm = Realm.getInstance(config0); 
} 


private String copyBundledRealmFile(InputStream inputStream, String outFileName) { 
    try { 
     File file = new File(context.getFilesDir(), outFileName); 
     FileOutputStream outputStream = new FileOutputStream(file); 
     byte[] buf = new byte[1024]; 
     int bytesRead; 
     while ((bytesRead = inputStream.read(buf)) > 0) { 
      outputStream.write(buf, 0, bytesRead); 
     } 
     outputStream.close(); 
     return file.getAbsolutePath(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

public void saveResource(final Resource resourceIn) { 
    realm.executeTransaction(new Realm.Transaction() { 
     @Override 
     public void execute(Realm realm) { 
      resourceIn.setSaved(true); 
     } 
    }); 
} 

public void unSaveResource(final Resource resourceIn) { 
    realm.executeTransaction(new Realm.Transaction() { 
     @Override 
     public void execute(Realm realm) { 
      resourceIn.setSaved(false); 
     } 
    }); 
} 

}

回答

0

这可能是因为你覆盖从您的原始资源每次启动应用程序时的“default0”的境界你的境界。

我推荐使用assetFile()参数,这是它的用途。