2016-08-23 2 views
0

У меня есть файл realm, который находится в моей исходной папке ресурса. Я могу читать объекты, изменять их и сохранять их для этого сеанса. Но когда я начинаю новый сеанс, данные не отражают ни одно из моих изменений. Я не называю Realm.deleteRealmFile() или Realm.clear() в любой момент.Данные Realm не сохраняются между сеансами

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

Это, вероятно, потому, что вы переписав Realm с «default0» области от ваших сырьевых ресурсов каждый раз, когда вы запустите приложение.

Я рекомендую использовать параметр assetFile(), для чего он нужен.

Смежные вопросы