Android数据库应用上下文失败

时间:2012-08-24 12:27:31

标签: android database lifecycle

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

database approaches

我使用方法2:一个Application对象,它包含我制作的单个LocalDatabaseAdapter。这包含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();
}

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

在OnActivityResult中,在相机拍照后,我获得了像

这样的数据库
LocalDbAdapter ldb = MyApplication.getLDb();

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

0 个答案:

没有答案