Можно ли получить доступ к базе данных из службы?

Я хочу получить доступ к базе данных из моей службы, которая работает в фоновом режиме. Это возможно?


person xyzandroid    schedule 15.02.2012    source источник
comment
Попробуйте этот stackoverflow.com/questions/7058107/   -  person Ajay    schedule 15.02.2012
comment
поэтому мой класс базы данных должен расширять SQLiteopenhelper. В противном случае служба не может получить к нему доступ, верно?   -  person xyzandroid    schedule 15.02.2012
comment
но я предлагаю вам использовать AsyncTask для доступа к базе данных в фоновом режиме вместо службы   -  person Ajay    schedule 15.02.2012
comment
есть ли у него преимущества перед сервисом?   -  person xyzandroid    schedule 15.02.2012


Ответы (4)


Да, можно получить доступ к вашей базе данных из службы. Для доступа к базе данных вам нужен только Context, который также доступен в сервисе.

person waqaslam    schedule 15.02.2012
comment
Как получить контекст внутри службы? - person channae; 30.05.2018
comment
@channae Service расширяется от Context, поэтому передача this или YourService.this туда, где это требуется, будет работать нормально. - person waqaslam; 30.05.2018

Да, доступ к базе данных из службы возможен. Все, что вам нужно сделать, это создать объект класса базы данных, который расширяет SqliteOpenHelper, передать ServiceName.this в качестве контекста или использовать класс вашего приложения в качестве контекста.

DbHelper db = new DbHelper(ServiceClass.this);
db.performOperations();
db.close();

OR

DbHelper db = new DbHelper(YourApplicationClass.getAppContext());
db.performOperations();
db.close();
person Rat-a-tat-a-tat Ratatouille    schedule 22.12.2014

Да, это возможно, и везде, где есть необходимость в использовании службы контекста.

person jeet    schedule 15.02.2012

Да, это нормальная функциональность, которую мы используем в приложении. @Аджай прав.

ПРИМЕР ИСПОЛЬЗОВАНИЯ

Вы можете вызвать метод, который обращается к БД из вашего класса обслуживания в потоке, который выполняется через несколько секунд.

person Siten    schedule 15.02.2012