Нет правильного или неправильного ответа на этот вопрос, но я решительно в использую лагерь контент-провайдера по следующим причинам.
Вы получаете четко определенный, простой в использовании интерфейс CRUD для ваших данных. После того как вы написали Контракт и ваши методы Провайдера, это всего лишь пара строк, чтобы начать извлечение данных. Когда вы позже приступите к работе над проектом или наймете другого разработчика, у вас будет скорость в течение нескольких минут.
Множество классов в платформе Android предназначены для работы с контент-провайдерами. В частности, CursorLoaders великолепны, и вам придется проделать немалую работу, чтобы эмулировать их функциональность самостоятельно. Удачи в управлении жизненным циклом курсора внутри действия, в дополнение к написанию всего собственного кода для извлечения данных и асинхронных задач. Есть разные нюансы и вещи, о которых нужно позаботиться. Это займет некоторое время .
Часто обновляете или вставляете строки? Довольно просто уведомить ListViews и других потребителей Cursor об изменениях через ContentProvider. Если вы не используете ContentProvider, вам придется написать своих собственных наблюдателей и управлять ими самостоятельно.
Хотите интегрировать окно быстрого поиска или применить мощную фильтрацию к ListView? Опять же, это просто, если вы используете Cursors и ContentProviders, и весь объем работы, если вы не.
Если в будущем вы решите открыть свои данные для других приложений, вы все равно в конечном итоге будете писать ContentProvider. Помните, что вы все равно можете использовать ContentProviders, не позволяя другим приложениям изменять ваши данные.
Я мог бы (и могу) расширить этот пост, но, надеюсь, вы поняли идею. Google использует провайдеров в таких замечательных приложениях, как iosched по определенной причине.