Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android. Content provider or Database?

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 data with other applications.

If I've understood it right, content providers based on SQLite DBs and it's also possible that content of them is only accessable for my application.

Can you give some explanations?

Thank you very much,

Mur

like image 590
Tima Avatar asked Nov 22 '10 08:11

Tima


People also ask

Is content provider a database in Android?

A content provider behaves very much like a database where you can query it, edit its content, as well as add or delete content using insert(), update(), delete(), and query() methods. In most cases this data is stored in an SQlite database.

Is content provider a database?

In Android, Content Providers are a very important component that serves the purpose of a relational database to store the data of applications.

What is the difference between content provider and SQLite database in Android?

What is the exact difference between "Content-Provider" and "SQLite Database"? ContentProvider is a facade -- an API you can implement that exposes databases to other processes. It can be implemented in a way where the data is stored in a SQLite database, but it does not have to be.

When should I use content provider?

A content provider can be used to manage access to a variety of data storage sources, including both structured data, such as a SQLite relational database, or unstructured data such as image files. For more information on the types of storage available on Android, see Storage options, as well as Designing data storage.


1 Answers

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.

like image 159
CommonsWare Avatar answered Oct 01 '22 00:10

CommonsWare