Добрый день.
Подскажите, как лучше реализовать создание CURSOR в сервисе Android.
У меня есть ContentProvide, DataAdapter. В активити, при старте приложения мой список создается. методы insert, update, query итд работают. при изменении базы список обновляется.
Так же я создал Reciver и Service. reciver успешно отлавливает системные Broadcast сообщения и пинает сервис. Но при старте сервиса не создается Cursor, исключение возникает в dbHelper.getWritableDatabase() (Мне необходимо создать курсор в методе onCreate и при следующем вызове сервиса в onStartCommand перейти на следующую строку и тд при каждом вызове сервиса.)
Ошибка:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase com.***.mContentProvider$DatabaseHelper.getWritableDatabase()' on a null object reference
где *** имя приложения.
Голову уже сломал с данной проблемой.
Как лучше реализовать данную потребность?
Спасибо!
Создал, class DatabaseHelp внутри ContentProvider. Читайте внимательнее, адаптер работает, следовательно и база открывается и считывается, при запросе с Activity
SGorshenin: значит ссылка на него до сервиса не дошла. Читайте внимательно и вдумчиво сами:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase com.***.mContentProvider$DatabaseHelper.getWritableDatabase()' on a null object reference
Чистым rawQuery данные получается достать из базы и положить в Cursor, дальше с ними работать могу. Но тогда пропадает возможность следить за обновлением информации в базе
.
SGorshenin: тема сервиса не раскрыта, это раз. К контент-провайдеру нужно обращаться через ContentResolver, это два. Context.getContentResolver().
И именование у вас жестокое, конечно. Классы в джаве надо именовать с большой буквы, префиксы не нужны.
Спасибо, я учту ваши замечания по поводу правильности кода. Я еще только начинающий.
Вы подсказали правильное решение. я упустил момент с "getContentResolver()"
Спасибо большое за подсказку в моем вопросе!