Есть несколько бд, для каждой свой Dbhelper. Для того, чтобы работать с ними, я создал класс, в котором все методы статические и синхронизованные, есть ссылка на контекст всего приложения (устанавливается в классе приложения, getApplicationContext()).
Затем, чтобы получить список объектов из бд, вызывается (в отдельном потоке) нужный метод, в нем создаются объекты Dbhelper и получаются бд для чтения, после всех операций объекты закрываются.
Какие у этого есть недостатки? На практике он работает хорошо (вроде бы).