我有一个应用程序,用于在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实例。

10-08 07:21
查看更多