Pogodka / Погодка
Приложение создавалось как тестовое задание со следующими исходными требованиями:
"Необходимо создать погодное приложение. Приложение должно иметь минимум 2 встроенных города (Санкт-Петербург, Москва), пользователь может добавить свой город. Приложение должно выводить города с указание температуры, приложение должно уметь показывать более подробную информацию по городу и уметь показывать прогноз погоды (3 или 7 дней). http://developer.yahoo.com/weather/, или на http://openweathermap.org/API, или любой другой на выбор. Время выполнения задания - 4-6 часов. Необходимо показать умение владением стека технологий: sqlite (sql/coredata/contentresolver), json (xml), API (rest), offline mode, git. (!) Обязательная реализация CRUD, для работы с данными. (!) Приложение обязано соблюдать design, code guidelines и свободно работать в offline режиме, а так же использовать систему сборки gradle (android)."
Был выбран источник данных http://openweathermap.org/API, поэтому наложились следующие дополнительные исходные данные: Запросы должны использовать идетификатор города, а не его имя. Таблица идентификаторов доступна в виде архива на сайте API (http://bulk.openweathermap.org/sample/city.list.json.gz) Возможно использование и имен/кодов стран, но они также стандартизованы и содержатся в файле. Имена городов в файле не локализованы. Информация о погоде локализована лишь частично. Поэтому помимо задания было сделано следующее:
- B качестве примера для разбора и заполнения таблицы городов, разрешенных для выбора использовался сокращенный эталонный json файл, для поиска в расширенном списке провадера требуется валидация либо готовая заполненная база, поставляемая с приложением.
- Отмеченные по заданию два города - СПб и Москва - выделяются запросом после создания таблицы с контентом.
Далее по заданию: Структура проекта разбита на пакеты, отражающие организацию данных: Activity - операции приложения, Adapters - адаптеры списков, Data Layer - описание структур данных, Data Access Layer - классы доступа к данным, dummy - классы-источники с тестовых данными, fragments - фрагменты-представления пользовательского интрефейса, interfaces - классы интерфейсов обратного вызова (и других). Организация на фрагментах позволяет создать более гибкий многокомпонентный интерфейс (например, просмотр общего списка прогнозов и детального для выбранного города) Данные централизованно хранятся в бд, сохраняются и отображаются оттуда, что позволяет получать их в оффлайн режиме, с учетом актуальности по дате. Данные проверяются на наличие для минимизации внешних запросов и не пропадают при перезапуске операций. Для работы с БД SQLite использована библиотека Active Android Программа обрабатывает изменения состояния подключения к сети и подгружает недостающие данные при их доступности. Реализованы CRUD для каждой таблицы/ design, code guidelines; ипользуется gradle под android studio