SQLiteOpenHelper的上下文应该始终是正在运行的活动吗?

时间:2015-04-25 11:27:43

标签: android

我只想从我的应用的主屏幕打开database一次,我想在任何activity的任何地方使用此实例。这是可能的,还是应该让context成为每个实际打开的activity,以便我必须在每个activity中创建一个数据库实例(打开)?

2 个答案:

答案 0 :(得分:3)

  

这是可能的还是应该让每个实际打开的上下文   活动,以便我必须创建一个数据库实例(打开)   每一项活动?

这是可能的,您可以使用应用程序上下文。你的DBHelper可能是一个单身人士。 E.g

public class DBHelper extends SQLiteOpenHelper { 

  private static DBHelper sInstance;
  public static synchronized DBHelper getInstance(Context context) {    
    if (sInstance == null) {
       sInstance = new DBHelper(context.getApplicationContext());
    }
    return sInstance;
  }

  private DBHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
  }

}

答案 1 :(得分:3)

您不需要为每个人Activity关闭并重新打开SQL连接。

话虽如此 - 最好使用应用上下文打开连接,以避免Activity leaks

您可以获得应用上下文引用quite easily