首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在整个应用程序中初始化/使用SQLiteOpenHelper变量

在整个应用程序中初始化/使用SQLiteOpenHelper变量
EN

Stack Overflow用户
提问于 2014-04-27 11:23:56
回答 1查看 655关注 0票数 2

我对如何在我的应用程序中处理我的数据库有一点担心,这是我基本做的事情:

我有一个扩展SQLiteOpenHelper的自定义类,它处理与DB的所有事务。

在我的应用程序中,我有一个单独的Activity和几个Fragments,它们在这个过程中被创建、删除、隐藏或显示。

在我需要修改或访问DB数据的每个Fragment中,我都声明了一个静态变量:

代码语言:javascript
运行
复制
private static DatabaseHandler mDB;

我在onCreate()方法上这样初始化它:

代码语言:javascript
运行
复制
mDB = DatabaseHandler.getInstance(getActivity());

所有这些都在起作用,我关心的是变量本身,在我所有的自定义片段类中将其声明为静态变量是不是一个好主意?

我也以同样的方式使用包含mParams = Parameters.getInstance(getActivity());的应用程序的主要参数的类,我应该也将其声明为静态吗?

我希望避免内存泄漏和NPE,但我不确定什么是正确的处理方法。

仅供参考,我的DatabaseHandler课程的开始:

代码语言:javascript
运行
复制
public class DatabaseHandler extends SQLiteOpenHelper {

private static DatabaseHandler sInstance = null;

(...)

private Resources mResources;

public static DatabaseHandler getInstance(Context context) {

    if (sInstance == null) {
        sInstance = new DatabaseHandler(context);
    }
    return sInstance;
}

private DatabaseHandler(Context context) {  
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    mResources = context.getResources();
}

(...)

谢谢

EN

Stack Overflow用户

发布于 2014-04-27 11:44:38

我通常在我的Application类中创建一个SQLiteDatabase静态实例,并在整个应用程序中进行访问。

因此,我有一个自定义类,它在应用程序创建时返回SQLiteDatabase实例。

这是我的应用程序类

代码语言:javascript
运行
复制
public class MainApplication extends Application {

   private static SQLiteDatabase mSQLiteDatabase = null;
    @Override
    public void onCreate(){
        super.onCreate();
        SQLiteAsyncTask sqLiteAsyncTask = new SQLiteAsyncTask(getApplicationContext());
        mSQLiteDatabase = (SQLiteDatabase) sqLiteAsyncTask.loadInBackground();
     }

      // method to get the sqlite db instance
      public SQLiteDatabase getSQLiteInstance(){
         return mSQLiteDatabase;
      }
 }

现在,您可以通过以下方式从活动或片段获取SQLiteDatabase实例

代码语言:javascript
运行
复制
         MainApplication.getSQLiteInstance()
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23319005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档