领域应用是如此之大

时间:2018-06-28 09:40:32

标签: android realm

我在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();
        }
    }
}

2 个答案:

答案 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)