我正在为我的大多数应用程序使用一个通用数据库(包含多个活动和多个片段)。我想这是非常标准的,所以我要问一个更普遍的问题。跟踪这个数据库的“最佳”方式(以及为什么)是什么?
我计划在帮助程序类中使用静态变量(因为我对活动生命周期的有限理解意味着主要活动可以在以后被破坏,所以这不是一个安全的地方离开它)。但另一种选择是只需使用AsyncTask就可以在每次需要时获取数据库引用“新鲜”(这是我第一次这样做)。我不认为我可以使用额外的东西发送它,我不知道任何使其可序列化的技巧。
我还缺少其他选择吗?我已经看到了使用应用程序的参考,但我不熟悉它们。
答案 0 :(得分:3)
我打算在辅助类中使用静态变量
这个或数据库周围的ContentProvider
包装器是两种典型的方法。
由于我对活动生命周期的有限理解意味着主要活动可能会在以后被破坏,所以这不是一个安全的地方离开它
此外,由于您有多个活动,因此将数据库保存在一个活动中并不是特别有用,因为其他活动无法访问它。
但另一种选择是只需使用AsyncTask就可以在每次需要时使用“新鲜”数据库引用(这是我第一次这样做的时候)。
这不是个好主意。您需要一个SQLiteDatabase
的实例才能使内置线程同步起作用。
我不认为我可以使用额外内容发送它,我不知道任何使其可序列化的技巧。
同意,这不是一种选择。
我还缺少其他选择吗?
如前所述,有些人会使用ContentProvider
作为数据库的包装器。在尝试将此数据公开给第三方时,这非常有用。它纯粹是内部使用的优点和缺点。
我见过使用应用程序的参考资料,但我不熟悉那些。
由于自定义Application
子类不会获得任何超过单例实例(静态数据成员)的东西,我不会担心它。