Набор базовых классов для моих проектов. Проекты как правило реализуют чистую архитектуру. Слой презентации пишется с использованием MVVM паттерна и библиотеки Android DataBinding.
Библиотека библиотека разбита на следубщие части:
- api
- database
- exceptions
- executor
- koin
- location/map
- navigation
- permission
- repository
- rx
- view
- viewmodel
Абстрактный класс принимает в дженерик интерфейс с ретрофит методами, инициализирует http клиента. Также содержит в себе загрузчик для picasso. При имплементации нужно определить url's для api сервера (development/production). Также можно добавить интерцепторы сетевого и программного уровня. Предоставляет инстанс для обращения к api. Нужно отметить что не имеет реализации singletone, поэтому каждый раз при создании объекта класса будет инициализирован новый инстанс клиента.
Абстрактный класс принимает в дженерик класс унаследованный от
RoomDatabase
для инициализации инстанса объекта доступа к бд. При имплементации нужно определить название бд. Также не реализован singletone инстанса доступа к бд.
Класс имеет один метод инициализирующий koin, принимает контекст приложения и список модулей для инициализации. Примечание: так как api и бд не реализуют singletone, это легко сделать пометив ключевым словом
single
имплементацию абстрактных классов api и бд в списке модулей koin.
Класс реализует пул потоков, использующийся в реализации вызовов репозитария. Пул настраивается приватными константами класса. Имеет метод для синхронного выполнения асинхронной операции на пуле потоков класса.
Абстрактный класс предоставляющий RX-методы для выполнения задач. Возвращает:
observable
,single
,completable
. Получая в параметреexecutor
выполняет задачи на его пуле. Методы класса создают RX-объекты, принимая callback для выполнения, выполняют его на потоках пула executor, и возвращают результат через emitter на главный поток.
Класс реализует проверку доступа к геопозиции, включения геопозиционирования и получение текущей геопозиции.
Утилитарные методы для работы с google картами - маркерами, кластерами, камерой.
Класс, принимая ссылку на активность или фрагмент, реализует проверку разрешений и их получение.