我一直在创造一个字典应用程序,我已经保存在的.csv文件所有单词
当应用程序在运行第一次,这种方法应该保存所有的话境界分贝,但只有节约少数。保存数据从CSV到境界
任务[email protected]从[email protected] [拒绝运行,池大小= 13,活动线程= 13,队列任务= 100,已完成的任务= 1]
realm = Realm.getDefaultInstance();
//adding to db satrt
if (!(realm.isEmpty())) {
Log.v("DB","already there!!");
} else {
Log.v("DB","Not Found!!");
String csvFile = "longevity.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
try {
br = new BufferedReader(new InputStreamReader(getAssets().open(csvFile)));
while ((line = br.readLine()) != null) {
// use comma as separator
final String[] oneWord= line.split(cvsSplitBy);
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm bgRealm) {
Word user = bgRealm.createObject(Word.class);
user.setWord(oneWord[1]);
user.setMeaning(oneWord[2]);
user.setSynonyms(oneWord[3]);
}
}, new Realm.Transaction.OnSuccess() {
@Override
public void onSuccess() {
Log.v("TAGGED","SAVED");
}
}, new Realm.Transaction.OnError() {
@Override
public void onError(Throwable error) {
Log.v("TAGGED","FAILED");
}
});
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
有出货预填充Relam数据库与Android更好的办法, 我有146800分的话时保存应用程序正在运行第一次,这种方法只保存几句话然后给错误分贝以上显示!
您应该运行整个事情在一个事务中,而不是146800个交易... – EpicPandaForce
是刚做这一点,但花费过多时间来编译,你知道我怎么能运送prepopulated数据库的领域? – phpdroid
您可以创建初始数据库并将其与应用程序一起分发:https://realm.io/docs/java/1.1.1/api/io/realm/RealmConfiguration.Builder.html#assetFile-android.content.Context- java.lang.String- – geisshirt