0

我正在开发主屏幕小部件,并且正在使用 android sqlite 数据库。我DBAdapter用简单的方法(添加、删除、获取记录...)实现了一个简单的类来处理数据库工作。它有效,但现在我正在考虑如何做到这一点的最佳方法。

对我来说最大的问题是如何(以及在​​哪里)存储我的 DBAdapter 的实例。如果我使用 Activity,那将非常简单——我将在onCreate方法中创建我的 DBAdapter 的实例,一切都很好。但是现在我没有这样的选择,因为我正在使用AppWidgetProvider并且很少IntentServices. AppWidgetProvider(BroadcastReceiver) 只存在一定的时间 - 在onReceive方法执行期间。IntentService在完成必要的工作后也“结束”。那么如何以及在哪里存储我的 DBAdapter 的实例?我不想每次都创建新的 DBAdapter 实例。

我在考虑这个选项:制作 DBAdapter 单例类或使用静态类和方法,另一个选项是使用 Gson 将 DBAdapter 存储到 sharedPreferences,或者使用序列化。但我更想问。这样做的正确方法是什么?多谢

4

1 回答 1

0

对我来说最大的问题是如何(以及在​​哪里)存储我的 DBAdapter 的实例。

专业提示:Adapter当类不继承自android.widget.Adapter.

我不想每次都创建新的 DBAdapter 实例。

欢迎您将其设为单例/静态数据成员。但是,一旦您的进程终止,它就会消失,无论如何您都需要再次创建一个新进程。因此,我建议您在IntentService. “DBAdapter使用简单的方法(添加、删除、获取记录......)”实例化应该非常便宜。

另一种选择是使用 Gson 将 DBAdapter 存储到 sharedPreferences,或者使用序列化

这是没有意义的。a 中唯一有价值的数据DBAdapter应该是SQLiteOpenHelper(或SQLiteDatabase来自其他来源),它本身不能被持久化。此外,这可能比仅仅创建一个新的DBAdapter.

于 2012-05-28T16:59:53.077 回答