/easy-go-skel

Support development library

Primary LanguageKotlinMIT LicenseMIT

Easy_Go_Library

Набор базовых классов для моих проектов. Проекты как правило реализуют чистую архитектуру. Слой презентации пишется с использованием MVVM паттерна и библиотеки Android DataBinding.

Библиотека библиотека разбита на следубщие части:

  • api
  • database
  • exceptions
  • executor
  • koin
  • location/map
  • navigation
  • permission
  • repository
  • rx
  • view
  • viewmodel

Api

Абстрактный класс принимает в дженерик интерфейс с ретрофит методами, инициализирует http клиента. Также содержит в себе загрузчик для picasso. При имплементации нужно определить url's для api сервера (development/production). Также можно добавить интерцепторы сетевого и программного уровня. Предоставляет инстанс для обращения к api. Нужно отметить что не имеет реализации singletone, поэтому каждый раз при создании объекта класса будет инициализирован новый инстанс клиента.

DataBase

Абстрактный класс принимает в дженерик класс унаследованный от RoomDatabase для инициализации инстанса объекта доступа к бд. При имплементации нужно определить название бд. Также не реализован singletone инстанса доступа к бд.

Koin

Класс имеет один метод инициализирующий koin, принимает контекст приложения и список модулей для инициализации. Примечание: так как api и бд не реализуют singletone, это легко сделать пометив ключевым словом single имплементацию абстрактных классов api и бд в списке модулей koin.

Executor

Класс реализует пул потоков, использующийся в реализации вызовов репозитария. Пул настраивается приватными константами класса. Имеет метод для синхронного выполнения асинхронной операции на пуле потоков класса.

Repository

Абстрактный класс предоставляющий RX-методы для выполнения задач. Возвращает: observable, single, completable. Получая в параметре executor выполняет задачи на его пуле. Методы класса создают RX-объекты, принимая callback для выполнения, выполняют его на потоках пула executor, и возвращают результат через emitter на главный поток.

Location

Класс реализует проверку доступа к геопозиции, включения геопозиционирования и получение текущей геопозиции.

Map

Утилитарные методы для работы с google картами - маркерами, кластерами, камерой.

Permission

Класс, принимая ссылку на активность или фрагмент, реализует проверку разрешений и их получение.