我正在开发主屏幕小部件,并且我正在使用android sqlite数据库。我用简单的方法(添加,删除,获取记录...)实现了一个简单的类DBAdapter
来处理数据库工作。它有效,但现在我正在考虑如何做到这一点的最佳方式。如何以及在AppWidgetProvider中存储持久对象(如db适配器)?
对我来说最大的问题是,如何(以及在哪里)存储我的DBAdapter的实例。如果我使用Activity,这将非常简单 - 我将在onCreate
方法中创建DBAdapter的实例,并且一切都很好。但现在我没有这种选择,因为我使用AppWidgetProvider
和几个IntentServices
。 AppWidgetProvider
(BroadcastReceiver)只能在特定的时间 - 在执行onReceive
方法期间生效。 IntentService
也会在完成必要的工作后“结束”。那么如何以及在哪里存储我的DBAdapter的实例?我不想每次都创建新的DBAdapter实例。
我在想这个选项:make DBAdapter singleton clas或使用静态类&方法,另一个选择是使用Gson将DBAdapter存储到sharedPreferences,或者使用序列化。但我宁愿问。什么是正确的方法来做到这一点? THX很多
thx,我会按照你的意见;) – qkx
但是,如何做到这一点,如果我需要从乘法服务写入数据库?例如dataservice会定期在后台运行,并向db写入新的数据,而在前台,我正在根据用户做一些写作 - 如果这两个写作都在同一时间(有时会发生),我会得到异常'android.database。 sqlite.SQLiteException:错误代码5:数据库被锁定。现在怎么办?更多细节在这里:http://stackoverflow.com/questions/10798233/concurrent-writing-to-android-database-from-multiply-services – qkx