Область применения настолько велика - PullRequest
0 голосов
/ 28 июня 2018

Моя база данных Realm в Android имеет размер 20 МБ +. Я создаю простое приложение, в котором загружаю 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
                });
    } 
}

И метод в дао, где я добавляю элементы:

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 голосов
/ 28 июня 2018

Должно быть:

            .doOnNext(request -> {
                movieDao.addMovies(request.getMovies());
            })

и

public void addMovies(List<Movie> movies) {
    try(Realm realm = Realm.getDefaultInstance()) {
        realm.executeTransaction(r -> r.insertOrUpdate(movies));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...