Android Kotlin Realm Forma de consulta adecuada + Devolver elementos no administrados en Bg Thread

¿Cuál es la forma correcta de consultar y devolver un resultado no administrado de elementos con dominio, todo en el hilo de fondo? Estoy usando algo así:

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
                }
    }

Y luego encadenar este observable con otro que publicará los resultados en un servidor.

La solución funciona, aunque es un poco fea en estos aspectos:

No hay una forma adecuada de envolver el realmQuery en un observable, porque no hay forma de abrir una realInstance en un hilo de fondo sin este tipo de trucos (al menos que yo sepa), por lo que necesito usar este falso observableObservable.just(1).

No es el mejor lugar para abrir y cerrar instancias de Realm, dentro del primer y segundo mapa

No sé si se garantiza que la instancia del reino se cierre después de que se hayan copiado todos los elementos.

Entonces, ¿cuál es la forma correcta de consultar y devolver resultados no administrados en el subproceso en segundo plano (algo de contexto, necesito esto para enviar los resultados a un servidor, en segundo plano y como esta tarea es totalmente independiente del flujo de datos actual de mi aplicación, por lo que debe estar fuera del hilo principal).

Versión Sugerida:

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta