弃用AsyncTask将影响会议室数据库

时间:2020-03-29 06:47:02

标签: android android-asynctask android-room

我有一个问题,将弃用AsyncTask会影响Room数据库。那些已经拥有使用会议室数据库的巨大应用程序的人应该做什么,而且删除和创建操作由AsyncTask完成。

1 个答案:

答案 0 :(得分:3)

如果您想在api级别30以上运行您的应用,可以。但是,您可以使用Java.util.Concurrent包轻松地更新代码。 例如 在您的abstarct数据库类中创建ExecutorService的静态实例,然后使用该实例在后台执行您的查询

public abstract class ExampleDatabase extends RoomDatabase {

public abstract ExampleDao exampleDao();

private static volatile WordDatabase INSTANCE;
private static final int NUMBER_OF_THREADS=4;
public static final ExecutorService databaseWriteExecutor= Executors.newFixedThreadPool(NUMBER_OF_THREADS);

public static ExampleDatabase getDatabase(final Context context){
    if(INSTANCE==null){
        synchronized (ExampleDatabase.class){
                INSTANCE= Room.databaseBuilder(context.getApplicationContext(),
                        WordDatabase.class,"word_database").build();

        }
    }
    return INSTANCE;
}

}
public ExampleRepository{
 ....// 
 void insert(Example example){
  ExampleDatabase.databaseWriteExecutor.execute(()->{
            ExampleDao.insert(example);
            });
 }
}