如何在 Room 中调用 Application getDatabase
How to call Application getDatabase in Room
我从这里下载了 Room BasicSample 应用程序:
https://github.com/googlesamples/android-architecture-components
此示例是一个只读数据库。没有插入单个实体的示例。我正在修改它,并努力弄清楚如何调用 getDatabase 以便我可以在单击按钮时在数据库上进行简单的插入 -
getDatabase().wordDao().insert(...) ?
如何访问单例 BasicApp 并调用 getDatabase 方法,我从哪里调用它?
感谢任何帮助。
单插入
@Insert(onConflict = IGNORE)
void insert(WordEntity word);
AppDatabase.java(不确定这里插入的方法是否适用)
private static void insert(final AppDatabase database, final WordEntity word) {
database.wordDao().insert(word);
}
BasicApp.java
public class BasicApp extends Application {
private AppExecutors mAppExecutors;
@Override
public void onCreate() {
super.onCreate();
mAppExecutors = new AppExecutors();
}
public AppDatabase getDatabase() {
return AppDatabase.getInstance(this, mAppExecutors);
} // ==> how do I get access to this?
public DataRepository getRepository() {
return DataRepository.getInstance(getDatabase());
}
}
如果您从 activity 或服务访问 BasicApp class,您只需调用 ((BasicApp)getApplication()).getDatabase()
.
在一定程度上取决于 class 您从事的工作。
如果它是一个 activity 方法(如 onCreate):
BasicApp basicApp = (BasicApp) this.getApplicationContext();
AppDatabase appDatabase = basicApp.getDatabase();
//... do work here
如果您只有一个视图(例如在将视图作为参数传递的 onClickListener 中):
BasicApp basicApp = (BasicApp) view.getContext().getApplicationContext();
AppDatabase appDatabase = basicApp.getDatabase();
//... do work here
我从这里下载了 Room BasicSample 应用程序: https://github.com/googlesamples/android-architecture-components
此示例是一个只读数据库。没有插入单个实体的示例。我正在修改它,并努力弄清楚如何调用 getDatabase 以便我可以在单击按钮时在数据库上进行简单的插入 - getDatabase().wordDao().insert(...) ?
如何访问单例 BasicApp 并调用 getDatabase 方法,我从哪里调用它?
感谢任何帮助。
单插入
@Insert(onConflict = IGNORE)
void insert(WordEntity word);
AppDatabase.java(不确定这里插入的方法是否适用)
private static void insert(final AppDatabase database, final WordEntity word) {
database.wordDao().insert(word);
}
BasicApp.java
public class BasicApp extends Application {
private AppExecutors mAppExecutors;
@Override
public void onCreate() {
super.onCreate();
mAppExecutors = new AppExecutors();
}
public AppDatabase getDatabase() {
return AppDatabase.getInstance(this, mAppExecutors);
} // ==> how do I get access to this?
public DataRepository getRepository() {
return DataRepository.getInstance(getDatabase());
}
}
如果您从 activity 或服务访问 BasicApp class,您只需调用 ((BasicApp)getApplication()).getDatabase()
.
在一定程度上取决于 class 您从事的工作。
如果它是一个 activity 方法(如 onCreate):
BasicApp basicApp = (BasicApp) this.getApplicationContext();
AppDatabase appDatabase = basicApp.getDatabase();
//... do work here
如果您只有一个视图(例如在将视图作为参数传递的 onClickListener 中):
BasicApp basicApp = (BasicApp) view.getContext().getApplicationContext();
AppDatabase appDatabase = basicApp.getDatabase();
//... do work here