领域executeTransactionAsync不写入数据到数据库
我在我的项目中使用领域数据库。 我想在应用程序第一次启动时,将我的资产文件夹中的JSON数据写入领域。 我使用Kotlin。 我启动我的领域:
Realm.init(this) val config = RealmConfiguration.Builder() .rxFactory(RealmObservableFactory()) .build() Realm.setDefaultConfiguration(config)
比我想异步写入List<Data>
我的数据库:
val realm = Realm.getDefaultInstance() realm.executeTransactionAsync { realm.copyToRealm(skillsList) } realm.close()
但是我的领域db是空的。 realm.copyToRealm(skillsList)
我有空表。 哪里不对? 我用Stetho检查桌子,它真的是空的。 我可以修复它?
我有一个错误:
Realm objects can only be accessed on the thread they were created
我解决它:
Thread({ Realm.getDefaultInstance().use { val skillsList = ArrayList<Skill>() val inputSkills = assets.open("skills.json") val size = inputSkills.available() val buffer = ByteArray(size) inputSkills.read(buffer) inputSkills.close() val json: JSONObject = JSONObject(String(buffer)) val skillsArray = json.getJSONArray("skills") (0..skillsArray.length() - 1) .map { skillsArray.getJSONObject(it) } .forEach { skillsList.add(Skill(skillsList.size.toLong(), it.getString("title"), it.getString("subtitle"), it.getInt("rating"))) } it.beginTransaction() it.copyToRealm(skillsList) it.commitTransaction() Log.d("REALM","LOOOOG") } }).start()