Android Kotlin Realm Правильный способ запроса + вернуть неуправляемые элементы в Bg Thread

Каков правильный способ запроса и возврата неуправляемого результата элементов с помощью области, все в фоновом потоке ?. Я использую somethibf следующим образом:

return Observable.just(1) .subscribeOn(Schedulers.io()) .map { val realm = Realm.getDefaultInstance() val results = realm.where(ItemRealm::class.java) .equalTo("sent", false).findAll() realm to results } .map { val (realm, results) = it val unManagedResults = realm.copyFromRealm(results) realm.close() unManagedResults } } 

И затем привязать это наблюдаемое к другому, которое опубликует результаты на сервере.

Решение работает, хотя это немного уродливо по этим аспектам:

Итак, каков правильный способ получения неуправляемых результатов Query and Return в фоновом потоке (в каком-то контексте мне нужно отправить результаты на сервер, в фоновом режиме и поскольку эта задача полностью независима от текущего потока данных приложения, поэтому должен быть от основного потока).

Предлагаемая версия:

 return Observable.fromCallable { Realm.getDefaultInstance().use { realm -> realm.copyFromRealm( realm.where(ItemRealm::class.java) .equalTo(ItemRealm.FIELD_SEND, false).findAll() ) } } 

Таким образом вы не сможете управлять объектами Realm:

  return Observable.defer(() -> { try(Realm realm = Realm.getDefaultInstance()) { return Observable.just( realm.copyFromRealm( realm.where(ItemRealm.class).equalTo("sent", false).findAll() ) ); } }).subscribeOn(Schedulers.io()); 

Хотя этот ответ – Java, ответ Котлин находится всего в двух шагах.