SQLiteOpenHandler为什么我们需要Context变量?

时间:2015-03-05 06:55:31

标签: java android sqlite

我已开始在android中编写我的第一个应用程序,并注意到在SQLiteOpenHandler的构造函数中:

public SQLiteOpenHelper (Context context, String name, SQLiteDatabase.CursorFactory factory, int version)

我有一个" Context"变量哪个角色对我来说不清楚,因为我的直觉是认为在我创建它的上下文中只有一个DB可以存在同名NO mattar。我已查看manual它说:

  

参数:   用于打开或创建数据库的上下文

这确实帮助我找出了Context角色ether。 因此,我想问一下

  1. Context在数据库创建中的作用是什么?
  2. 是否会为不同的上下文创建不同的数据库实例,但是相同的数据库名称,工厂和版本?

1 个答案:

答案 0 :(得分:1)

  

Context在数据库创建中的作用是什么?

在构建数据库文件的完整包私有路径时,需要获取应用程序的包名称。

具体而言,由openOrCreateDatabase()调用SQLiteOpenHelper Context.getDatabasePath()。{/ 1}

  

是否会为不同的上下文创建不同的数据库实例,但是相同的数据库名称,工厂和版本?

不,只要上下文使用相同的应用程序,即共享清单中定义的相同包名称。

如果应用程序不同,应用程序专用数据路径将不同,数据库文件也会不同。