【问题标题】:Will deprecation of AsyncTask will affect the Room Database不推荐使用 AsyncTask 会影响 Room 数据库
【发布时间】:2020-03-29 06:47:02
【问题描述】:

我有一个问题,即弃用 AsyncTask 会影响 Room 数据库。其他已经有一个巨大的应用程序使用房间数据库的人应该怎么做,而且删除和创建操作是由AsyncTask完成的。

【问题讨论】:

标签: android android-asynctask android-room


【解决方案1】:

如果您想在 api 级别 30+ 中运行您的应用程序,是的,它会影响。但是您可以使用 Java.util.Concurrent 包轻松更新您的代码。 例如 在您的抽象数据库类中创建 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);
            });
 }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多