Android. Content provider or Database?

后端 未结 3 586
北海茫月
北海茫月 2020-12-08 07:16

I\'m a bit confused in the question, if it\'s better to use ContentProvider or Database. Or it makes no difference if I don\'t want to share any da

相关标签:
3条回答
  • 2020-12-08 07:47

    There certainly are worthwhile problems for which a provider is a solution, particularly for cross-app data publishing. For example, you need to use a content provider to supply search suggestions to a Quick Search Box.

    However, for internal use within an application, I am not a fan. The benefits IMHO are outweighed by the costs (e.g., reduced flexibility, additional overhead).

    If you do implement a content provider, bear in mind that they are accessible by other applications by default. You need to include android:exported="false" in the <provider> element to make them private to your app.

    0 讨论(0)
  • 2020-12-08 07:47

    Using a content provider will give you a more modular design, and make your life easier if you at some point in future would like to reach the data from other applications. If you are certain that the data will only ever be needed from one application, you might as well operate directly on the database.

    There is one particular SQLite limitation you should be aware of and that is that SQLite is single-user only. What this really means is that you will need to guard your database from being accessed from multiple threads at the same time. This is generally not a problem in a content provider, since they almost always have a single-threaded implementation.

    0 讨论(0)
  • 2020-12-08 07:50

    Reasons to use content provider are here.

    In summary:

    1. Easily change the underlying data source (you can change your db from Sqlite to Mongo or to a JSON file without any app changes)
    2. Leverage functionality of some Android Classes (SyncAdapter, Loaders, CursorAdapter) - These classes require content provider and you cant use them if you dont have one
    3. Allow many apps to access, use and modify a single data securely. (which is really the main reason for using it)
    0 讨论(0)
提交回复
热议问题