Olá,
Gostaria de saber qual a melhor abordagem para utilização do context para criação do banco de dados e também da variável String com o nome dele.
Costumo utilizar o padrão de projeto MVP, então possuo uma classe denominada "App", onde consigo obter o context da aplicação.
Por exemplo, em meu código, configurei da seguinte forma:
public static MyRoomDatabase getDatabaseInstance() {
return Room.databaseBuilder(
App.getContext(),
MyRoomDatabase.class,
App.getContext().getString(R.string.database_name)
).allowMainThreadQueries().build();
}
Classe App:
public class App extends Application {
private static Application application;
private static Application getApplication() {
return application;
}
public static Context getContext() {
return getApplication().getApplicationContext();
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
application = this;
}
}
Esta é uma boa prática, ou devo utilizar a maneira abordada no vídeo (para o nome do database criou-se um atributo da classe database como private static final string, e para obtenção da instância do banco de dados utilizou-se a passagem do context via parâmetro)
Obs.: Acredito que desta maneira conseguirei fazer a operação no banco de dados mesmo se a tela (context enviado como parâmetro) não existir mais.