доступ к БД с помощью greendao через приложение

Я начал учиться и использовать greendao ORM, и у меня есть эта проблема.
Я пишу приложение memo / alert, и это означает, что мне нужен доступ к БД из различных действий, а также служб и приемников.
Например: на одном экране я устанавливаю значения оповещений.
На службе и получателе я читаю эти значения и действую соответственно.

настройка и доступ к БД с объектами и отношениями, кажется, работают нормально изнутри моей основной деятельности oncreate (), поскольку я только что настроил кодер для тестирования и отладки.

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

Кроме того, я где-то читал, что я не должен инициализировать DB в основном действии.
Может ли кто-то развить это и объяснить идею инициализации и проблему с основным действием?

Надеюсь, я смог прояснить свои проблемы.
Спасибо за чтение и, возможно, ответ.

1 ответ

  1. Утечка контекста означает, что вы сохранили ссылку на более Contextчем нормальный жизненный цикл-обычно Activityзавершенный или Serviceостановленный. Передача аргумента a в Contextкачестве метода не означает, что произошла утечка. Это только утечка, если вы сохраняете ссылку на это Contextв поле и держите ее за пределами точки, которую система хочет уничтожить (поэтому ваша ссылка предотвращает ее от сбора мусора). То же самое может произойти , если вы держите ссылку на что-то еще, что держит ссылку на aContext, основным примером которого является a View.

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

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

    Вот отличная статья о Contexts, которая может быть полезной: https://possiblemobile.com/2013/06/context/