了解如何使用数据库SQLite的问题

时间:2011-06-15 17:00:33

标签: android sqlite

我有一个应用程序,我将一些数据存储在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();

或者,如果有人有更好的解决方案,请告诉我:)。谢谢你

2 个答案:

答案 0 :(得分:1)

它只会打开一次因为你在Application类的onCreate方法中调用它,它将在应用程序启动时调用,在创建任何其他应用程序对象之前。你可以在这里查看我的一个项目link

希望这有帮助。

编辑:关于应用程序类:Android将自动创建该类的实例,并使其可用于整个应用程序。您可以使用Context.getApplicationContext()从任何上下文访问它。因此,将只共享一个Application实例。

答案 1 :(得分:0)

您的方法的替代方法可以是创建一个SingleTon类,您可以在其中保留对打开的dbconnection的引用,以便可以重用它。

因为对于任何Android应用程序,只有单个applcation类实例分布在所有活动中,所以你的db只在android应用程序的开头才打开。