【发布时间】:2019-02-24 22:12:15
【问题描述】:
首先,我想问你,如果你认为这个问题值得 -1,请诚实并解释原因。
这是Application类的代码:
class WeatherApp: Application() {
override fun onCreate() {
super.onCreate()
Realm.init(this)
Realm.setDefaultConfiguration(
RealmConfiguration.Builder()
.deleteRealmIfMigrationNeeded()
.initialData(DatabaseInitTransaction(applicationContext))
.build()
)
}
}
这是事务类:
class DatabaseInitTransaction(private val applicationContext: Context): Realm.Transaction {
override fun execute(realm: Realm) {
Log.d("DatabaseInitTransaction", "execute called.")
val cityDao = CityDao(realm)
realm.deleteAll()
var stream :InputStream? = null
try {
stream = applicationContext.assets.open("city.list.json")
cityDao.createAllFromJson(CityEntity::class.java, stream)
} catch (thr: Throwable) {
} finally {
stream?.close()
}
}
}
因此,在DatabaseInitTransaction 类的冷启动方法execute() 上永远不会被调用。我不知道为什么,请帮忙!
【问题讨论】:
-
你有没有在这段代码之后调用getDefaultInstance()?
-
initialData()只会在磁盘上尚不存在 Realm 文件时运行。也许您应该先在测试设备上清除应用程序数据?