[英]Is it a good idea to use SQLiteDatabase instance as a static field in Application class?
I developing a dictionary android app. 我开发了一个字典Android应用程序。 i am using a database in app to get word and it's meaning.
我在应用程序中使用数据库来获取单词,这就是意义。 is it a good way to use a static
SQLiteDatabase
in Application
class and use it in some activities and classes? 在
Application
类中使用静态SQLiteDatabase
并在某些活动和类中使用它是一种好方法吗?
public class App extends Application {
public static SQLiteDatabase database;
@Override
public void onCreate() {
super.onCreate();
database = SQLiteDatabase.openOrCreateDatabase(
Constants.MAIN_DB_PATH,
null);
}
and use it in this ways: 并以这种方式使用它:
public class MainActivity extends AppCompatActivity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
Cursor cursor = App.database.rawQuery(query, null);
...
}
}
and: 和:
public class MyClass{
...
public MyClass() {
...
Cursor cursor = App.database.rawQuery(query, null);
...
}
}
Since you need only one instance of this object, this is a practicable approach. 由于只需要该对象的一个实例,因此这是一种可行的方法。 You can define the database:
您可以定义数据库:
public class Database{
private static SQLiteDatabase localDatabase = null;
private Database(){}
public static SQLiteDatabase getLocalDatabase(){
if (localDatabase == null){
localDatabase = SQLiteDatabase.openOrCreateDatabase(...);
}
return localDatabase;
}
}
In your activity code, you can use it like: 在活动代码中,您可以像这样使用它:
Database.getLocalDatabase().rawQuery(...);
EDIT: To apply all rules of the Singleton-Pattern, also add a private & empty constructor, so you cannot instantiate the object accidentially. 编辑:要应用Singleton-Pattern的所有规则,还添加一个私有和空的构造函数,因此您不能意外地实例化该对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.