在没有上下文的情况下在运行时创建SQLite DB

时间:2012-07-04 19:55:14

标签: java android sqlite

  

可能重复:
  Create SQLite DB in Android library

我正在创建一个Java库,我需要在运行时打开或创建一个SQLite数据库,以便我的库存储数据等......

我见过的所有Android版SQLite API都需要一个上下文,从一个活动来创建一个DB,因为我正在做一个库,没有活动等......我怎么能得到一个SQLite DB?

问题是我的库只有一个公共类,而在我的内部工作库中,我需要创建一个供私人使用的SQLite DB。 所以我不能要求用户发送上下文。或者我可以吗?

只是看看谷歌在他们的图书馆中如何做到这一点? 在我使用Android的分析库时,我决不会传递任何其他内容,而不是应用程序ID进行分析。在他们的文档中,您可以阅读:“浏览量,事件和电子商务点击存储在 SQLite数据库 中,并定期发送到Google Analytics服务器

1 个答案:

答案 0 :(得分:3)

  

如何获得SQLite数据库?

让您图书馆的消费者为您提供Context

  

所以我不能要求用户发送上下文。或者我可以吗?

是的,你可以。如果您注意到,android.*包中的许多类都有以Context为参数的方法。您也可以使用Context作为参数的方法。

现在,您需要记录Context的预期用途以及将触及它的对象的生命周期,以便您图书馆的消费者可以传递适当的用户。例如,如果您的库将创建一个保留在SQLiteOpenHelper上的静态数据成员,您将希望实际让库的使用者为您提供Application,而不是Activity。 },Service或其他Context,因此您不会遇到垃圾回收问题。