Я хочу добавить несколько строк (около 180) в мою базу данных при первом запуске приложения. Я нашел некоторый учебник с Executors.newSingleThreadExecutor()
, как https://android.jlelse.eu/pre-populate-room-database-6920f9acc870. Но есть ли другие способы предварительно заполнить базу данных?
AppDatabase.class
@Database(entities = {Country.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
private static AppDatabase INSTANCE;
public abstract CountryDao countryDao();
public synchronized static AppDatabase getInstance(Context context) {
if (INSTANCE == null)
INSTANCE = buildDatabase(context);
return INSTANCE;
}
private static AppDatabase buildDatabase(final Context context) {
return Room.databaseBuilder(context, AppDatabase.class, "countries").allowMainThreadQueries().addCallback(new Callback() {
@Override
public void onCreate(@NonNull SupportSQLiteDatabase db) {
super.onCreate(db);
Executors.newSingleThreadExecutor().execute(new Runnable() {
@Override
public void run() {
getInstance(context).countryDao().insertAll(Country.populateData());
}
});
}
}).build();
}
}