最佳实践:管理片段之间的android数据库引用

时间:2012-01-04 18:55:34

标签: android android-fragments android-lifecycle

如何处理显示数据列表的碎片与后台更新数据的不同线程/类之间的引用。因此,我需要能够通过Observer-inf或类似的东西强制从Fragments外部进行更新。

目前我正在使用虚拟工厂类创建一个新的SqlLiteDatabase对象,基于我的默认设置。

public static SQLiteDatabase initFor(Context context) {
    db = context.openOrCreateDatabase(NAME, SQLiteDatabase.CREATE_IF_NECESSARY, null);
    db.setLocale(Locale.getDefault());
    db.setVersion(1);
    db.setLockingEnabled(true);
    return db; }

然后我从每个片段调用它并设置适配器,这同样适用于数据插入器线程。要关闭数据库,我覆盖我的活动的onDestroy()并调用:initFor(this).close(); 。

这非常难看,它在方向改变时失败了。我在想SQLiteOpenHelper,但我不知道它对我有什么帮助。

1 个答案:

答案 0 :(得分:0)

您应该在另一个线程(在服务中)访问您的数据库,然后与一个类(可能是您的帮助程序)进行对话,然后通过在扩展Application的类中初始化的单例来访问此帮助程序类。您可以通过调用

从任何片段中获取Application类
 ((YourApplication) context.getApplicationContext()).getGetDatabaseHelper();