Лучшие практики: Управление ссылками на базы данных Android между фрагментами - PullRequest
3 голосов
/ 04 января 2012

Как мне обрабатывать ссылки между фрагментами, показывающими список данных, и различными потоками / классами, которые обновляют данные в фоновом режиме.Из-за этого мне нужно иметь возможность принудительно обновлять извне фрагментов через Observer-inf или что-то подобное.

В настоящее время я использую фиктивный фабричный класс для создания нового объекта 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; }

Затем я вызываю это из каждого фрагмента и устанавливаю адаптерыто же самое относится и к data-insertter-threads.Чтобы закрыть базу данных, я переопределяю onDestroy () своей деятельности и вызываю: initFor (this) .close ();,

Это очень некрасиво и не помогает при изменении ориентации.Я думаю о SQLiteOpenHelper, но я не знаю, как это мне поможет.

1 Ответ

0 голосов
/ 11 июня 2012

Вы должны получить доступ к своей базе данных в другом потоке (в Сервисе), затем поговорить с одним классом (который может быть вашим помощником), затем вы получите доступ к этому вспомогательному классу через синглтон, инициализированный в классе, расширяющем Application.Вы можете получить класс приложения из любого из ваших фрагментов, позвонив по номеру

 ((YourApplication) context.getApplicationContext()).getGetDatabaseHelper();
...