如何在没有数据库的情况下填充内容提供程序

Posted

技术标签:

【中文标题】如何在没有数据库的情况下填充内容提供程序【英文标题】:How to populate Content Provider without a DB 【发布时间】:2012-04-14 17:02:40 【问题描述】:

在我的 android 应用程序中,我使用的是基于 Intent 的第三方库应用程序。 第 3 方库需要一个包含从我的应用生成的数据的内容提供程序。

不幸的是,我的应用程序不使用数据库或任何类型的持久性:数据完全不稳定。 因此,Content Provider 没有可从中获取数据的数据库。

理想情况下,我希望在 Android 运行时实例化时将数据传递给 Content Provider。有没有办法做到这一点?

感谢问候 文森佐

【问题讨论】:

【参考方案1】:

您需要使用MatrixCursor。它是一个可变游标,您可以在运行时添加行。将此游标传递给您的 ContentProvider,它需要一个普通的 db 游标。你可以搜索谷歌的例子。

【讨论】:

您好 Akhil 感谢您的回复。我知道这个 api,但我不清楚什么时候应该这样做。我的意思是我无法控制内容提供者何时被运行时实例化。如何在库使用 CP 之前填充它? 您可以在 cp 的实例化方法本身即 onCreate() 生命周期中执行此操作。 好的,但我需要的数据在应用程序的主活动中作为易失性变量存在。如何从 Content Provider 的 onCreate 方法中获取这些数据? 创建一个存储活动变量的类,cp 将使用该类的 get().. 方法进行询问。由于 cp 也在同一进程中启动,它应该能够访问该对象

以上是关于如何在没有数据库的情况下填充内容提供程序的主要内容,如果未能解决你的问题,请参考以下文章

Sqldelight 1.4 如何在没有主键(id)的情况下插入填充数据生成对象

如何在没有默认行填充颜色的情况下构建Bokeh数据表?

如何在没有 innerHTML = ""; 的情况下清除 div 的内容

如何启用/禁用提交按钮,仅在提供两个条件的情况下:检查输入单选和填充输入文本

我如何在没有订单的情况下填充托盘架存储?

如何在没有循环的情况下填充 char 数组