CROSP
CROSP

Reputation: 4617

Do I really need Content Provider in my application

I am creating app that should have offline mode, so previously downloaded data should stored somewhere, the most common way is to store data in SQLite database.

Mostly SQLite database is used with Content Provider in android. I have clear understanding what is the purpose of content provider (to share data between different apps), but in my case application will never need to share the data with other apps in the system.

Content provider has the similar interface as HTTP request (GET,POST,PUT,DELETE).
My idea is to create facade class which can be used like this getAllLatestNews(); firstly it will try to get latest data from the internet, if it fails - data from database will be used and if request is successful it also will save retrieved data to the database. This class will be facade for separating different layers of application (not to make requests from activities directly).

But now I am a little bit puzzled deciding whenever I need Content Provider or not. I can use SQLiteOpenHelper classes to retrieve and save data to the database or even use ORM library to do this.
At first I wanted to implement REST API Pattern B by Virgil Dobjanschi. But now I am not sure about this, maybe it would be better to create facade for Robospice(in my case, network request in the service) requests and do persistence there ?

Please share you thoughts about this topic, I would be grateful for any help.

EDIT

I asked this question because I feel that it is not good practice to make requests directly from activities even if they are made in service under the hood, I want to separate different layers of my application in order to make it more flexible and maintainable.

Upvotes: 0

Views: 1245

Answers (2)

frogatto
frogatto

Reputation: 29285

Content Providers are absolutely for sharing data between applications and are of no use without this purpose.

If you want to use those data only in your app privately, you could use SQLite databases. Also there other objects available:

  • Shared Preferences
  • Files

Content provider has the similar interface as HTTP request (GET,POST,PUT,DELETE)

I don't think so. It's more like to SQL language.

Upvotes: 2

Moonbloom
Moonbloom

Reputation: 7918

As you don't intend to share your data, i would say that implementing a ContentProvider is overkill.

Personally im a huge fan of ORM libraries (Currently i use SugarOrm in several projects), so i would go down that road.

Then at app startup, you check whether or not you have an active internet connection, and based on that you either get the latest information online, or retrieve older information from the database.

To seperate the logic a bit, i would most likely implement the getting of online information in a service, which would then store it in the database and broadcast to the activity that the information is now available, and then the activity could retrieve the information from the newly updated database.

Upvotes: 3

Related Questions