我正在尝试实现隔离和模块化,因此我将数据存储在相互通信的不同应用中。
我有一个名为ContentProvider
的公共“foos”的自定义FooContentProvider
。
第二个应用中的第二个ContentProvider
应根据匹配的“foo_id”为某些foos保留一些“条形”。
第三个应用现在应该能够显示ListView
所有的foos,如果可用的话还有条形码。
现在我被困在如何组织代码上。我可以让我的FooBarContentProvider
列出带有关联栏的foos,还是我应该只在FooBar ListView应用程序中加入这些?如何在不复制数据或必须将连接的表存储在内存中的情况下仍然利用所涉及的数据库?
ContentProvider
使用MatrixCursor
CursorJoiner
我找到了CursorJoiner
我可以用来填充MatrixCursor
我可能用于我的FooBarContentProvider或者可选地只用在FooBar ListView应用程序中来支持ListView但是我预计会有相当大的延迟启动和内存问题,如果foos和bars进入数百或数千(高级用户将实现),当然,如果数据发生变化并且新的foos到达,它将无法正常工作。
FooContentProvider
并提供预编译BarContentProvider
HashMap<String, Bar>
如果FooBar ListView由FooContentProvider
支持,它可以填充Map
的“条形”数据。这样,我可以减少在显示第一个数据之前解析ContentProvider
之前只需要解析其中一个数据。在我的情况下,条形图更小且严格小于foos,并且foos的更改是从服务驱动的,而条形图主要是用户输入,因此这可能是notifyChange()
工作的更好选项。 / p>
ContentProvider
将数据收集到合并数据库代理ContentProvider
可以监听其他两个并提供我需要的数据库,但这会浪费大量存储空间,因为FooContentProvider
很容易进入数百MB。
#4有好的选择吗?如何以ListView
支持ContentProvider
以一种方式运行,特别是在启动时,数据更改会快速传播到ListView
?