0

本文很好地展示了不同的数据库方法:

数据库方法

我使用方法 2:一个包含我制作的单个 LocalDatabaseAdapter 的 Application 对象。这包含一个 DatabaseOpenHelper 等。

public class MyApplication extends Application {


private static LocalDbAdapter lDb;

public void onCreate() {
    super.onCreate();
    MyApplication.context = getApplicationContext();
    lbm = LocalBroadcastManager.getInstance(context);
[..]
}
public static LocalDbAdapter getLDb(){
    if(lDb==null){
        lDb = new LocalDbAdapter(context);
    }
    if(lDb.isOpen()){
        return lDb;
    }else{
        return lDb.open();
    }
}
@Override
public void onTerminate() {
    super.onTerminate();
    lDb.close();
}

现在,当我启动相机应用程序然后返回我的主要活动时,我得到了数据库从未关闭的错误。正如它所指出的,这个数据库是在应用程序上下文中创建的,所以为什么我没有在我的活动中关闭它是一个问题,我认为这就是想法。只有一个数据库对象的一个​​重要优点是 LocalDbAdapter 的所有执行任何写入操作的方法都在插入或更新周围使用 protected(this) 语句。

在 OnActivityResult 中,相机拍照后,我获取数据库,如

LocalDbAdapter ldb = MyApplication.getLDb();

这让我非常沮丧。如果我在我的 MainActivity 的 onPause 中关闭它,我担心使用相同对象的后台服务会遇到麻烦,我什至将对象保持在 onActivityResult 的本地......

4

0 回答 0