我有一个应用程序,用于在SQLIte数据库中存储一些数据。
我想做的是在应用程序启动时仅一次打开数据库,然后使用数据库的同一实例。
这个想法不是在我需要的每个活动中都打开数据库。
我得到的解决方案之一是创建一个扩展Application的类,然后在其中打开数据库:
代码如下所示:
public class MyApplication extends Application{
private static DBAdapter db;
public void onCreate()
{
db=new DBAdapter(getApplicationContext());
db.createDatabase();
db.openDataBase();
}
public static DBAdapter getDatabaseAdapter()
{
return db;
}
}
因此,在我需要与
DB
连接的应用程序的每项活动中,我都会执行以下操作:MyApplication myApplication = (MyApplication) this.getApplication();
DBAdapter db= myApplication.getDatabaseAdapter();
但是我不太确定我的
DB
是仅在应用程序的开头打开还是每次我打开它时都打开: MyApplication myApplication = (MyApplication) this.getApplication();
?
或者如果有人有更好的解决方案,请告诉我:)。谢谢
最佳答案
它只会被打开一次,因为您是在Application类的onCreate方法中调用它的,在创建任何其他应用程序对象之前,该方法将在应用程序启动时被调用。您可以在这里查看我的项目之一link。
希望能有所帮助。
编辑:关于应用程序类:Android将自动创建该类的实例,并将其用于整个应用程序。您可以使用Context.getApplicationContext()从任何上下文访问它。因此,将只有一个共享的Application实例。