取消AsyncTask会不会影响到房间数据库?

问题描述 投票:0回答:1

我有一个问题,AsyncTask的废弃会不会影响到房间数据库。如果已经有使用房间数据库的大型应用程序,而且删除和创建操作都是由AsyncTask完成的,那么其他人该怎么办?

android android-asynctask android-room
1个回答
1
投票

如果你想在api级别30以上运行你的应用,是会有影响的。但是你可以使用Java.util.Concurrent Package.For example在你的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);
            });
 }
}
© www.soinside.com 2019 - 2024. All rights reserved.