6

我正在扩展SQLiteOpenHelper课程。我的构造函数是

public MyDatabaseHelper(Context context) {
    super(
        context,         // ???
        "MyDatabase.db", // Database name
        null,            // Cursor factory
        1                // database version
    );
}

SQLiteOpenHelper 构造函数对上下文信息做了什么?

对于我的应用程序,无论程序状态(上下文)如何,构造函数的行为都相同。我可以在没有任何未来问题的情况下为上下文传递 null 吗?

4

1 回答 1

6

如果您提供空值,它将创建一个内存数据库,但您还需要为数据库名称参数提供空值,以便正确处理。

这记录在上下文的构造函数文档中

用于打开或创建数据库文件的数据库名称的上下文,或 null 用于内存数据库

另外,如果你查看 SQLiteHelper 类本身的源代码,你会看到它使用 mName 值来决定是否使用 mContext。在此处在线查看源代码:

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.4_r1.2/android/database/sqlite/SQLiteOpenHelper.java#SQLiteOpenHelper.0mContext

于 2012-06-22T01:49:21.847 回答