我有一个名为dbasynctask的类,它使用asynctask,这是一个非擦写的类,那么我应该如何做呢。
class DBAsyncTask(val context: Context, val restaurantEntity: RestaurantEntity, val mode: Int) :
AsyncTask<Void, Void, Boolean>() {
val db = Room.databaseBuilder(context, RestaurantDatabase::class.java, "restaurant-db").build()
override fun doInBackground(vararg params: Void?): Boolean {
when (mode) {
1 -> {
val restaurant: RestaurantEntity =
db.restaurantDao().getAllRestaurant(restaurantEntity.restaurant_Id)
db.close()
return restaurant != null
}
2 -> {
db.restaurantDao().insertRestaurant(restaurantEntity)
db.close()
return true
}
3 -> {
db.restaurantDao().deleteRestaurant(restaurantEntity)
db.close()
return true
}
}
return false }
而且,我是这样使用的,这不是正确的方法。
val checkFav = DBAsyncTask(context, restaurantEntity, 1).execute()
val isFav = checkFav.get()
数据库示例应该为整个应用程序创建一次,引用应该在任何地方使用
我应该如何实现这一点???
2条答案
按热度按时间83qze16e1#
如果您需要重写此文件并使用kotlin/room,我认为这是一个更好的选择。
另一种选择是使用单例模式,如果您使用kotlin,您可以一起使用协同路由,如果使用java,则可以使用task。
我相信单态或单态可以解决你的问题。
8fq7wneg2#
您必须创建singleton类来获取db示例。可能是这样的事情。
然后你可以像这样在代码中调用它