Привет, в этом тестовом задании вам не придется писать свое приложение с нуля, ведь за вас его уже написал анонимный ИИ. К сожалению реализованное приложение оказалось далеко не идеальным, более того --- оно даже не выполняет основной сценарий для которого было написано. Ваша задача --- исправить это и спасти приложение, выполнив задания по пунктам ниже. Обратите внимание, что к приложению подключена библиотека MyLib -- представим, что это очень важная сторонняя библиотека для сбора информации о поисковых запросах пользователя. Однако после ее подключения пользователи стали жаловаться, что приложение теперь очень медленно открывается.
Приложение должно использовать API https://dummyjson.com/docs/users и уметь отображать полный список пользователей. Для каждого пользователя нужно показывать его аватарку, имя, фамилию, университет и возраст. Приложение должно поддерживать поиск пользователей.
Стек:
- MVI
- Glide
- Coroutines
- Android View
- Необходимо восстановить работу приложения --- чтобы оно выполняло функциональные требования.
- Опишите, что такое холодный старт приложения. Предложите системное решение для замера времени старта приложения, так, чтобы на этом замере была видна задержка, вызываемая подключением библиотеки. Стоит считать, что идеальный замер времени старта (идеальный != достижимый) -- от момента клика пользователем на иконку приложения
в лаунчере системы, до возможности начать интерактивно взаимодействовать с приложением. Реализуйте предложенное решение. Вычисленное время старта нужно передавать в специальную функцию логирования
WaterbaseTracker.trackAppStart() - Внимательно изучите приложение и предложите потенциальные улучшения (от 1 до 3 --- больше не нужно, можно улучшать как UX, так и архитектуру). Рассчитывайте, что в будущем в это приложение будет добавляться экран с карточкой пользователя, возможность просмотра ленты постов в отдельном экране, а также другой тип пользователей -- сообщества. Для каждого улучшения обязательно укажите какие преимущества оно принесет, а также что потенциально может быть не так после его внедрения.
- Реализуйте одно из предложенных улучшений на выбор (ТОЛЬКО ОДНО).
Пример для пункта 3: Предлагаю внедрить в приложение Jetpack Compose. Это позволит писать UI в декларативном стиле, а также сделает проект привлекательным для разработчиков с рынка. Однако может негативно повлиять на производительность решения. Для демонстрации я реализовал экран списка друзей на Compose.
Что не стоит предлагать: изменения связанные с заменой ключевых элементов стека: View, MVI, Coroutines. Вы можете добавлять что-то новое или например каким-то образом улучшить текущую реализацию этих элементов стека, но целиком заменять их не стоит. (То есть пример, приведенный выше не удовлетворяет этому правилу!)
- Создайте свой собственный приватный репозиторий на Github
- Добавьте в коллабораторы пользователя vkandroidtt (автор этого репозитория)
- В ветку main (master) залейте код, представленный в этом репозитории
- Создайте ветку solution
- Реализуйте в ней п. 1 - 4 задания (для пункта 3 представьте описание улучшений в виде текстового файла, в него же добавьте раздел про холодный старт для пункта 2). ВАЖНО: каждый пункт -- в отдельном коммите!
- Сделайте pull request из ветки solution в ветку main (master)
- Пришлите ссылку pull request