package me.mahakagg.notesroom; import android.content.Context; import android.os.AsyncTask; import androidx.annotation.NonNull; import androidx.room.Database; import androidx.room.Room; import androidx.room.RoomDatabase; import androidx.sqlite.db.SupportSQLiteDatabase; @Database(entities = {Note.class}, version = 1, exportSchema = false) abstract class NoteRoomDatabase extends RoomDatabase { abstract NoteDao noteDao(); private static NoteRoomDatabase INSTANCE; static NoteRoomDatabase getDatabase(final Context context) { if (INSTANCE == null) { synchronized (NoteRoomDatabase.class) { if (INSTANCE == null) { INSTANCE = Room.databaseBuilder(context.getApplicationContext(), NoteRoomDatabase.class, "note_database") .fallbackToDestructiveMigration() .addCallback(sRoomDatabaseCallback) .build(); } } } return INSTANCE; } // run asyncTask whenever app is opened private static RoomDatabase.Callback sRoomDatabaseCallback = new RoomDatabase.Callback() { @Override public void onOpen(@NonNull SupportSQLiteDatabase db) { super.onOpen(db); new PopulateDbAsync(INSTANCE).execute(); } }; /* * asyncTask to delete all existing entries and repopulating the database with the contents of string array * */ private static class PopulateDbAsync extends AsyncTask<Void, Void, Void> { private final NoteDao mDao; String title = "Sample title"; String content = "Sample content for the note"; PopulateDbAsync(NoteRoomDatabase db) { mDao = db.noteDao(); } @Override protected Void doInBackground(final Void... params) { Note note = new Note(0, title, content); mDao.insert(note); return null; } } }