Я разрабатываю виджет главного экрана, и я использую базу данных Android Android. Я применил простой класс DBAdapter
с помощью простых методов (добавление, удаление, получение записей ...) для обработки работы базы данных. Он работает, но теперь я думаю о том, как это сделать.Как и где хранятся постоянные объекты (например, адаптеры db) в AppWidgetProvider?
Самая большая проблема для меня - как (и где) хранить экземпляр моего DBAdapter. Если бы я использовал Activity, это было бы очень просто - я создам экземпляр моего DBAdapter в методе onCreate
, и все в порядке. Но теперь у меня нет такого варианта, поскольку я использую AppWidgetProvider
и несколько IntentServices
. AppWidgetProvider
(BroadcastReceiver) живет только определенное время - во время выполнения метода onReceive
. IntentService
также «заканчивается» после завершения необходимой работы. Итак, как и где хранить экземпляр моего DBAdapter? Я не хочу создавать каждый раз новый экземпляр DBAdapter.
Я думал об этом: сделайте DBAdapter singleton clas или используйте статические классы &, другой вариант - использовать Gson для хранения DBAdapter для sharedPreferences или, возможно, использовать сериализацию. Но я бы предпочел спросить. Каков правильный способ сделать это? Thx много
thx, я последую вашим советам;) – qkx
но, как это сделать, если мне нужно написать db из многократных сервисов? Например, dataservice работает на фоне через регулярные промежутки времени и записывает свежие данные в db, а на переднем плане я делаю некоторые записи в зависимости от пользователя - если эти записи одновременно в одно и то же время (иногда это происходит), я получаю исключение 'android.database. sqlite.SQLiteException: код ошибки 5: база данных заблокирована'. Что теперь? Подробнее здесь: http://stackoverflow.com/questions/10798233/concurrent-writing-to-android-database-from-multiply-services – qkx