kotlin - 为什么在设置配置时从不调用 initialData() Realm?
问题描述
首先,我想问您,如果您认为这个问题值得-1,请诚实并解释原因。
这是应用程序类的代码:
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()
}
}
}
因此,永远不会调用类的冷启动方法execute()
。DatabaseInitTransaction
我不知道为什么,请帮忙!
解决方案
您必须首先检查您的自定义应用程序类名称是否写入清单文件。
在
<Application>
带有类名的标签
推荐阅读
- android - 证书固定 - 从证书 .crt 文件生成 SHA256 固定密钥
- password-protection - 存储字符串并供以后使用的最安全方式
- python - 自定义命令和从许多来源导入的可能性
- mysql - Node Red MySQL 无法连接到本地工作的 docker MySQL 服务器
- python - 在python中的mysql表中插入时间戳
- android - 无障碍服务未启动
- angular - 如何在pdfmake中动态创建列表
- python - 为什么在 python 中对 asyncio 服务器的多个请求的时间会增加?
- android - 如何使用 Google 服务帐户使用 API Rest (Google Cloud SQL)
- c# - 插入列表
到没有存储过程的临时表