我正在开发主屏幕小部件,我正在使用android sqlite数据库。我使用简单的方法(添加,删除,获取记录......)实现了一个简单的类DBAdapter
来处理数据库工作。它有效,但现在我正在考虑如何做到这一点的最佳方式。
对我来说最大的问题是,如何(以及在何处)存储我的DBAdapter实例。如果我使用Activity,那将非常简单 - 我将在onCreate
方法中创建我的DBAdapter实例,一切都很好。但现在我没有这样的选择,因为我使用的是AppWidgetProvider
而很少IntentServices
。 AppWidgetProvider
(BroadcastReceiver)仅在特定时间内生活 - 在执行onReceive
方法期间。 IntentService
完成必要的工作后也会“结束”。那么如何以及在何处存储我的DBAdapter实例?我不想每次都创建新的DBAdapter实例。
我在想这个选项:make DBAdapter singleton clas或者使用static class&方法,另一种选择是使用Gson将DBAdapter存储到sharedPreferences,或者使用序列化。但我宁愿问。这是正确的方法吗?很多
答案 0 :(得分:0)
对我来说,最大的问题是,如何(以及在何处)存储我的DBAdapter实例。
专业提示:如果不从Adapter
继承,请不要使用android.widget.Adapter
结束课程。
我不想每次都创建新的DBAdapter实例。
欢迎您将其设为单例/静态数据成员。但是,一旦您的流程终止,它就会消失,无论如何您都需要再创建一个新流程。因此,我建议您只需在IntentService
中根据需要创建实例。使用简单方法(添加,删除,获取记录......)的DBAdapter
“实例化应该非常便宜。
另一种选择是使用Gson将DBAdapter存储到sharedPreferences,或者使用序列化
这没有任何意义。 DBAdapter
中唯一有价值的数据应该是SQLiteOpenHelper
(或来自其他来源的SQLiteDatabase
),这些数据本身不能保留。而且,这可能比创建DBAdapter
的新实例慢〜1000倍。