Я хочу получить доступ к базе данных из моей службы, которая работает в фоновом режиме. Это возможно?
Можно ли получить доступ к базе данных из службы?
comment
Попробуйте этот stackoverflow.com/questions/7058107/
- person Ajay   schedule 15.02.2012
comment
поэтому мой класс базы данных должен расширять SQLiteopenhelper. В противном случае служба не может получить к нему доступ, верно?
- person xyzandroid   schedule 15.02.2012
comment
да, ознакомьтесь со статьей vogella.de/articles/AndroidSQLite/article.html а>
- person Ajay   schedule 15.02.2012
comment
но я предлагаю вам использовать AsyncTask для доступа к базе данных в фоновом режиме вместо службы
- person Ajay   schedule 15.02.2012
comment
есть ли у него преимущества перед сервисом?
- person xyzandroid   schedule 15.02.2012
comment
проверьте этот пост :: stackoverflow.com/questions/6957775/
- person Ajay   schedule 15.02.2012
Ответы (4)
Да, можно получить доступ к вашей базе данных из службы. Для доступа к базе данных вам нужен только Context
, который также доступен в сервисе.
person
waqaslam
schedule
15.02.2012
Как получить контекст внутри службы?
- person channae; 30.05.2018
@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