2013-04-20 5 views
0

В настоящее время у меня есть экземпляр TouchDB, встроенный в мой основной вид деятельности, и теперь он попал в точку, где отдельный фрагмент нуждается в доступе к нему, и несправедливо передавать данные из основной активности в другие действия недостаточно. Есть ли рекомендуемый способ совместного использования одного и того же экземпляра db между действиями/фрагментами? Например, на изображении ниже, которое похоже на мое приложение, фрагмент b требует доступа к db, но на мобильных телефонах он будет прикреплен к Activity B и таблеткам Activity A (основное действие в моем случае).Как поделиться экземпляром TouchDB между активностью и фрагментом?

enter image description here

бы извлекая реализацию дб из моей основной деятельности и положить его в одноплодной классе быть рекомендуемым способом? Или создать экземпляр и уничтожить db в каждом действии/фрагменте? Если более поздним является предпочтительным подходом, я понимаю, что в этом случае, помимо основной деятельности, было бы лучше иметь реализацию db в фрагментах, а не в их связанной деятельности?

ответ

0

Вы должны определенно извлеките свой код БД из кода просмотра. После этого у вас есть много вариантов в зависимости от потребностей вашего приложения.

Модели, которые могут быть полезны в зависимости от ваших потребностей:

  • Инверсия управления (IoC)
  • Dependency Injection
  • завод
  • Singleton

Примечание стороны на Одиночки , о котором вы упомянули в качестве возможного решения. Между Синглтоном и глобальным статическим объектом очень мало различий. Они имеют сходные недостатки - они вводят зависимости кода, а код, который их использует, может быть очень трудным для написания автоматических тестов. Основное отличие состоит в том, что Singletons может управлять, когда базовый объект сначала создается, что, вероятно, оказывает минимальное влияние на ваше приложение. (Если ваш код db занимает 10 секунд для загрузки, и вы хотите показать заставку во время загрузки, тогда может оказаться полезным синглтон.)

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