Android系统.内容提供商或数据库?

Tim*_*ima 28 sqlite android android-contentprovider

我在这个问题上有点困惑,如果使用ContentProvider或者更好Database.或者,如果我不想与其他应用程序共享任何数据,则没有任何区别.

如果我理解正确,内容提供商基于数据库,SQLite并且它们的内容也可能只能访问我的应用程序.

你能解释一下吗?

非常感谢你,

穆尔

Com*_*are 49

当然,提供商是一个解决方案的有价值的问题,特别是对于跨应用程序数据发布.例如,您需要使用内容提供商向快速搜索框提供搜索建议.

但是,对于应用程序内部使用,我不是粉丝.成本(例如,灵活性降低,额外开销)超过了恕我直言的好处.

如果您确实实现了内容提供程序,请记住默认情况下其他应用程序可以访问它们.您需要android:exported="false"<provider>元素中包含它们以使其成为应用程序的私有内容.

  • @JohnnyLambada:是的.我在写这个答案时比起来时更加中立,但我仍然不会在应用程序中使用内容提供程序进行内部使用. (6认同)
  • @CommonsWare,如果关于内容提供者和SQLite的灯泡出现在你的头脑中,请写一篇博文!谢谢 (4认同)
  • 一年多以来,你的思想泡沫仍然存在问号吗? (3认同)

Rob*_*ert 12

使用内容提供商将为您提供更加模块化的设计,如果您将来希望从其他应用程序获取数据,则可以让您的生活更轻松.如果您确定只需要从一个应用程序获取数据,那么您也可以直接在数据库上运行.

您应该注意一个特定的SQLite限制,那就是SQLite只是单用户.这实际上意味着您需要保护您的数据库不会同时从多个线程访问.这在内容提供者中通常不是问题,因为它们几乎总是具有单线程实现.