I am writing an application that consists of business logic and UI parts. There is quite big amount of data to be stored and accessed/modified by both BL and UI. In most of
I would recommend spending that extra time and energy to write your ContentProvider. ContentProviders are not just about sharing access to data. The advantages
ContentObserversnotifyChangeAll in all, a ContentProvider is a very beautiful Android concept which is well-worth implementing. And once you have your definitions in place, it is not very difficult to add support for more data. It will then be as easy as writing your database code in a Helper class or your business-logic classes.
** EDIT ** Here's a utility which generates content provider code from model classes: https://code.google.com/p/mdsd-android-content-provider/
IMO: Single APK == direct access through a persistence layer. Multple APKs (either your own or wanting to provide access to the data to others' apps) == Content Provider by simple necessity.
In the apps that I've written, I've found that once you get past the learning curve, implementing a ContentProvider is pretty easy.
Pros:
Cons:
When I was trying to figure out how to implement a ContentProvider, I poured over the example code in Google's I/O application. Before you make a decision, I would at least spend a day prototyping one so you can get first-hand experience of the tradeoffs.