我有一个应用程序,我将一些数据存储在SQLIte数据库中。 而我正在尝试做的是在我的应用程序启动时只打开我的数据库一次,然后使用我的数据库的相同实例。
我的想法不是在我需要的每项活动中打开我的数据库。
我得到的解决方案之一是 - 创建一个扩展Application的类,然后在那里打开DB:
这就是代码的样子:
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();
或者,如果有人有更好的解决方案,请告诉我:)。谢谢你
答案 0 :(得分:1)
它只会打开一次因为你在Application类的onCreate方法中调用它,它将在应用程序启动时调用,在创建任何其他应用程序对象之前。你可以在这里查看我的一个项目link。
希望这有帮助。
编辑:关于应用程序类:Android将自动创建该类的实例,并使其可用于整个应用程序。您可以使用Context.getApplicationContext()从任何上下文访问它。因此,将只共享一个Application实例。
答案 1 :(得分:0)
您的方法的替代方法可以是创建一个SingleTon类,您可以在其中保留对打开的dbconnection的引用,以便可以重用它。
因为对于任何Android应用程序,只有单个applcation类实例分布在所有活动中,所以你的db只在android应用程序的开头才打开。