我在Android中的Realm数据库的大小为20MB以上。我创建了一个简单的应用程序,在其中我从网络加载了20个项目并保存。为什么我的应用程序这么大?
只需配置:
Realm.init(this);
Realm.setDefaultConfiguration(new RealmConfiguration.Builder()
.deleteRealmIfMigrationNeeded()
.name("database.db")
.build());
从网络加载数据的方法:
public void loadMovies() {
if (AppUtil.isNetworkConnectionAvailable()) {
Timber.d("available");
apiInterface.getAllMovies()
.subscribeOn(Schedulers.io())
.doOnNext(request -> {
List<Movie> movies = request.getMovies();
for (int i = 0; i < movies.size(); i++) {
Timber.d("movie: %s", movies.get(i).toString());
movieDao.addMovie(movies.get(i));
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(request -> {
//completed
});
}
}
在dao中添加项目的方法:
public void addMovie(Movie movie) {
Realm realm = Realm.getDefaultInstance();
try {
realm.executeTransaction(r -> r.copyToRealmOrUpdate(movie));
} finally {
if (realm != null) {
realm.close();
}
}
}
答案 0 :(得分:0)
应该是:
.doOnNext(request -> {
movieDao.addMovies(request.getMovies());
})
和
public void addMovies(List<Movie> movies) {
try(Realm realm = Realm.getDefaultInstance()) {
realm.executeTransaction(r -> r.insertOrUpdate(movies));
}
}
答案 1 :(得分:0)