Рассмотрим следующее: у меня есть Service
, который записывает в БД в AsyncTask
.А моя активность читает данные из БД (для простоты рассмотрим поток пользовательского интерфейса).Я обращаюсь к БД, используя SQLiteOpenHelper
.Я создаю один экземпляр в Application onCreate () , а затем получаю его по службе и активности.Есть ли вероятность, что моя БД будет заблокирована?Ранее я использовал ContentProvider для таких операций.Хотя он основан на использовании одного экземпляра SQLiteOpenHelper
, я решил упростить свой проект, исключив ContentProvider
.
Рассмотрим код:
public class App extends Application {
private OpenHelper openHelper;
@Override
public void onCreate(){
super.onCreate();
openHelper=new OpenHelper();
}
public OpenHelper getHelper(){
return openHelper;
}
}
В Деятельности:
OpenHelper helper=(App)getApplication().getHelper();
SQLiteDatabase db=helper.getReadableDatabase();
// Do reading
А внутри Serice, в отдельном потоке:
OpenHelper helper=(App)getApplication().getHelper();
SQLiteDatabase db=helper.getWritableDatabase();
//Do writing
Будет ли этоsafe?
UPD Возможно, это , но вы не знаете, как его использовать.