Android: когда привязывать элементы управления к базе данных - PullRequest
1 голос
/ 29 апреля 2011

Когда лучше всего связывать мои элементы управления (например, просмотр текста) со значениями в моей базе данных SQLite?Я думал, что помню, что читал, что вы должны делать это в onStart (), но большинство примеров, которые я видел, устанавливают значения в onCreate ().

Вот пример кода:

//I think this always goes in onCreate
MyDb db = new MyDB();
db.open();
Textview tvTextView;
tvTextView = findViewById(R.id.tv1);

//I'm not sure whether to put this in onCreate(), onStart(), or onResume()
tvTextView.setText(db.getMyText());

Обычно MyDb и TextView являются переменными для всего класса.

Ответы [ 2 ]

2 голосов
/ 30 апреля 2011

Это зависит от желаемого вами поведения. Если вы хотите, чтобы текст устанавливался только один раз, onCreate() будет достаточно. Если вы хотите, чтобы текст обновлялся каждый раз, когда ваша деятельность возвращается на передний план, вы можете использовать onStart(), onRestart() или даже onResume(). Очевидно, что если вы хотите, чтобы текст обновлялся все чаще (например, при каждом изменении базы данных), вам нужно будет сделать что-то более сложное.

1 голос
/ 30 апреля 2011

Я предлагаю использовать laoders в библиотеке поддержки фрагментов. В этом примере показано, как использовать загрузчики (использующие те из API HC), чтобы загрузить курсор из БД контактов и обновить адаптер списка, когда вы получите первый результат и при его обновлении:

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentListCursorLoader.html

Использование этого для заполнения ваших собственных данных в основном то же самое, но вместо того, чтобы установить его в адаптере, когда вы вернете курсор назад, вы можете просто извлечь нужные данные и установить их в своих полях.

Статья о том, как получить версию библиотеки поддержки:

http://android -developers.blogspot.com / 2011/03 / фрагменты-для-all.html

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

...