2013-07-25 32 views
0

我必须表明在ListView SQLite数据库的内容,并寻求在网上我发现了2个选项:Android:有什么更好的,使用SQLiteCursorLoader或实现ContentProvider?

内容提供商

Android Dev文档说,访问数据库不需要内容提供者,它应该用于与其他应用程序共享数据(我不需要)。你认为在效率,容易出错和简单方面更好?

谢谢你们!

+1

'Android开发人员的文档说,访问数据库不需要内容提供者,它应该用于与其他应用程序共享数据(我不需要)'答案在于这个问题。使用装载机。 – Simon

+0

是的,但我见过使用内容提供者的开发人员,并且我怀疑是否有一些优势 – pposca

+0

我尝试了两种方法(使用ContentProvider和SimpleCursorAdapter的Loader),并且我认为使用Loader与ContentProvider真的更好。 ContentProvider的实现很简单,并且始终如一。它会为你节省很多问题(例如游标生命周期) – buzeeg

回答

0

很明显,共享数据是人们使用内容提供商的最常见原因。

  • 目前已在SQLite和多个用户的一些bug,虽然不是绝对的,通常内容提供商是在一个单独的线程,并能解决这个问题,是的,这是在应用程序之间共享的数据。
  • 内容提供者可以为您提供一种抽象级别,并且可能具有较少的代码维护,特别是对于内部数据库结构更改。
  • 它允许您使用CursorLoader执行异步查询,从而加载您的UI活动,这是设计建议。
  • 与数据库帮助程序配合使用,可以更轻松地使表和列名称正确,并缩小必须查看和维护代码的位置。
  • 在您的应用程序和内容提供程序之间使用数据库帮助程序或协议可以提供一些安全性,因为您将方法提供给您的和任何其他应用程序以更新数据。
  • 这也可以给你一些更好的数据完整性,这取决于你的数据库结构有多复杂。它让猜测工作失去了,我应该先更新表A,然后再更新表B或其他方式。
  • 它可以帮助表连接和视图,所以你只需要弄清楚一次,并将它们表示为一个URI。
  • 您可以创建一个URI来处理内容提供​​者内部的原始查询以提供结果,否则可能很难用正常的URI结构编写,因为它在大多数教程中都有介绍。如果您必须编写相关查询,这也很有用。
+0

非常完整且有用的答案,@Peter。谢谢! – pposca

相关问题