2010-09-07 5 views
2

Хорошо, поэтому в моем приложении у меня есть класс DBAdapter, который хорошо выполняет свою работу. В основной деятельности у меня есть переменная this.dbAdapter. Я хотел бы поделиться этой переменной с другими Activites, поэтому мне не нужно создавать новый DBAdapter в каждом Activity.Поделиться DBAdapter между действиями

Как было бы лучшим способом сделать это? Должен ли я делать что-то вроде intent.putExtra("DbAdapter", this.dbAdapter);? Или есть другой способ, которым я должен заниматься?

Спасибо!

+0

Невозможно ответить на ваш вопрос, но я могу сказать, что у вас есть дополнительные возможности только для поддержки нескольких разных типов, и я не верю, что DBAdapter является одним из них. Плюс, вы только закончите тем, что статируете, а не ссылкой. – stealthcopter

+1

Если вы вызываете open() в onResume и close() в onPause, вам не стоит беспокоиться о создании нового объекта DbAdapter в каждом действии. Кроме того, я не эксперт, но я предполагаю, что вы столкнулись с проблемами с Contexts, используя ваш метод. –

+0

Это ваш DBAdapter? Является ли это подклассом CursorAdapter? Это просто ваш собственный класс для упрощения работы с БД? Без такой информации довольно сложно ответить на ваш вопрос. –

ответ

1

Решение, которое наилучшим образом интегрируется с Android, - create a Content Provider, и каждый из них запрашивает его, используя адаптер для привязки результатов вашего запроса к вашим виджетам. Однако вы можете просто создать новый DBAdapter в каждом мероприятии, чтобы закрыть все ресурсы, когда действие приостановлено. Если вам нужно сохранить состояние в своем адаптере, вы, вероятно, делаете что-то неправильно.

+0

В ответах на этой странице я просто займусь созданием нового DBAdapter для каждого действия. – Chiggins

+0

Это, безусловно, не «лучшее решение» ... вам не нужно создавать «ContentProvider», чтобы просто разделить адаптер на несколько видов деятельности ... –

+0

После 3+ лет разработки Android я обнаружил, что это лучшее решение для меня. Он тесно связан с ОС Android, что дает вам множество потрясающих вещей бесплатно. Чтобы упростить его использование, я абстрагировал его, поэтому на самом деле это проще, чем писать материал базы данных, поскольку вам не нужно писать SQL: https://github.com/mitmel/SimpleContentProvider (это похоже на ORM , но не создает тонны объектов). –

0

Я хотел бы поделиться этой переменной с другими Activites, поэтому мне не нужно создавать новый DBAdapter в каждом> Activity.

Пожалуйста, не делайте этого. Адаптеры тесно связаны с их действиями и базовыми данными. Все, что вы сделаете, это привести к сбою вашего приложения.

+0

Что было бы хорошей альтернативой тому, что я хотел бы тогда? – Chiggins

+0

Вы уверены, что это какой-то подкласс CursorAdapter? Или я чего-то не понял? –

+0

@Chiggins: Просто создайте новый 'DBAdapter'. – CommonsWare

Смежные вопросы