Usa el reino en todos los hilos

Tengo una class DBManager para operaciones CRUD y quiero usarla en la aplicación, sé que solo se puede acceder a los objects Realm en el hilo que se crearon y por esa razón no puedo usar los methods de class My DBManager dentro de los hilos, etc. ..

lo que quiero es llamar al método updateUploadingFileStatus declarado dentro de DBManager, desde el hilo que se ejecuta dentro del service.

esta es mi class DBManager

object DbManager { private val realm: Realm by lazy { Realm.getDefaultInstance() } fun saveOrRemoveUploadFile(filePath: String, save: Boolean){ val model = getUploadModelByFilePath(filePath) realm.executeTransaction { model.markedForUpload = save realm.insertOrUpdate(model) } } fun updateUploadingFileStatus(filePath: String, uploaded: Boolean){ val model = getUploadModelByFilePath(filePath) realm.executeTransaction { model.uploadedStatus = uploaded } } fun getFilesForUpload() : List<UploadModel> { return realm .where(UploadModel::class.java) .equalTo("markedForUpload",true) .equalTo("uploadedStatus",false) .findAll() } fun getUploadModelByFilePath(filePath: String) : UploadModel { return realm.where(UploadModel::class.java).equalTo("filePath",filePath).findFirst() ?: UploadModel(filePath) } } 

Llamar a este método desde otro subprocess arroja java.lang.IllegalStateException Realm access from incorrect thread. ¿Cómo se puede resolver este problema? ¿Cuál es un buen estilo para hacer cosas como esa?

Cambie su código de function de la siguiente manera:

  public void updateUploadingFileStatus(final String filePath, final Boolean uploaded) { mRealm.executeTransactionAsync(new Realm.Transaction() { @Override public void execute(Realm realm) { UploadModel model = getUploadModelByFilePath(filePath); model.uploadedStatus = uploaded; } }); } 

Hace un time resolví este problema usando una nueva transacción. También estaba usando una class Singleton para acceder al RealmDB, y estaba llamando a esta function dentro de un controller de respuesta de la networking. Esto debería funcionar.

  • kotlin + parceler + Realm
  • No se puede build el proyecto de Android después de agregar la class Realm
  • no se puede crear ArrayList dentro de la subclass RealmObject
  • Android Kotlin Realm Forma correcta de consultar + Actualizar Async
  • Clase de datos Kotlin de RealmObject
  • kotlin - reino y package
  • Acceso al reino desde un hilo incorrecto en Espresso
  • Cómo usar Realm's en el método con Kotlin
  • Realm & Kotlin: DefaultRealmModuleMediator.java -> error: statement inalcanzable
  • Basic Realm + Kotlin: RealmObject no está configurando valores pasados
  • ¿Cómo especifico que un campo encuadrado puede ser anulable en mi código de migration de Realm?