我正在开发一个字典 android 应用程序。我在应用程序中使用数据库来获取单词及其含义。在 Application
类中使用静态 SQLiteDatabase
并在某些 Activity 和类中使用它是一种好方法吗?
public class App extends Application {
public static SQLiteDatabase database;
@Override
public void onCreate() {
super.onCreate();
database = SQLiteDatabase.openOrCreateDatabase(
Constants.MAIN_DB_PATH,
null);
}
并以这种方式使用它:
public class MainActivity extends AppCompatActivity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
Cursor cursor = App.database.rawQuery(query, null);
...
}
}
和:
public class MyClass{
...
public MyClass() {
...
Cursor cursor = App.database.rawQuery(query, null);
...
}
}
最佳答案
由于您只需要此对象的一个实例,因此这是一种可行的方法。 您可以定义数据库:
public class Database{
private static SQLiteDatabase localDatabase = null;
private Database(){}
public static SQLiteDatabase getLocalDatabase(){
if (localDatabase == null){
localDatabase = SQLiteDatabase.openOrCreateDatabase(...);
}
return localDatabase;
}
}
在您的 Activity 代码中,您可以像这样使用它:
Database.getLocalDatabase().rawQuery(...);
编辑:要应用单例模式的所有规则,还要添加一个私有(private)和空的构造函数,这样您就不会意外地实例化对象。
关于java - 将 SQLiteDatabase 实例用作 Application 类中的静态字段是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57574493/