如何解决在android向日葵应用程序上用applicationContext.assets.open打开一个不存在的文件
在向日葵应用中, https://github.com/android/sunflower 有一个工作经理请求从文件中预填充数据 这是工人:
package com.google.samples.apps.sunflower.workers
class SeedDatabaseWorker(
context: Context,workerParams: WorkerParameters
) : CoroutineWorker(context,workerParams) {
override suspend fun doWork(): Result = coroutineScope {
try {
applicationContext.assets.open(PLANT_DATA_FILENAME).use { inputStream ->
JsonReader(inputStream.reader()).use { jsonReader ->
val plantType = object : TypeToken<List<Plant>>() {}.type
val plantList: List<Plant> = Gson().fromJson(jsonReader,plantType)
val database = AppDatabase.getInstance(applicationContext)
database.plantDao().insertAll(plantList)
Result.success()
}
}
} catch (ex: Exception) {
Log.e(TAG,"Error seeding database",ex)
Result.failure()
}
}
companion object {
private const val TAG = "SeedDatabaseWorker"
}
}
此代码不会创建将用于预填充数据库的文件,也不会在应用程序的其他位置创建,如果该文件不存在怎么办?从文档中不清楚。 open 函数会发生什么 https://developer.android.com/reference/android/content/res/AssetManager.html#open(java.lang.String)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。