Ответ 1
DAO предназначен для предоставления абстрактного интерфейса к базе данных. ContentProvider уже делает это.
Да, вы можете сделать второй уровень абстракции для предоставления DAO API, но... Вы программируете на мобильном устройстве. Использование API ContentProvider напрямую будет более эффективным. Это много примеров. Например, посмотрите, насколько тесно связаны курсоры и ListViews. Посмотрите на классы CursorAdapter, и вы увидите, как он предназначен для непосредственной сопоставления с курсором базы данных на список на экране. Посмотрите на ContentObserver и посмотрите, как это было сделано для push-уведомления курсора для обновления в соответствии с измененной базой данных и, в свою очередь, обновите один элемент списка в ListView, чтобы отразить эту базу данных по мере ее изменения в реальном времени...
Вы собираетесь потратить огромные усилия, изобретая колесо, пытаясь получить весь существующий код для переноса модели DAO. Я не знаю вашего приложения, но я не уверен, что вижу преимущество, которое вы получаете от него.