Android App Performance Optimization (https://blog.mindorks.com/android-app-performance-optimization-cdccb422e38e) - небольшая заметка, посвященная профилированию и устранению узких место в коде приложения. Статья состоит из четырех разделов:
* Обновление интерфейса. Когда ОС не успевает выполнить работу по обновлению содержимого экрана за 16 миллисекунд происходит ферймдроп - система пропускает один или несколько кадров из-за чего пользователь видит лаги. Выявить узкие места поможет встроенный в Android GPU-профайлер: Settings -> Developer Options -> Profile GPU Rendering (необходимо следить чтобы столбцы не пересекали зеленую черту);
* Время запуска приложения. Простой совет: все, что можно инициализировать позже, нужно инициализировать позже, в том числе интерфейс - сначала отображаем "скелет интерфейса", а затем асинхронно загружаем в него ресурсы (изображения и т.д.);
* Лайоты. Чтобы сделать интерфейс более быстрым для отображения необходимо избегать излишнего вложения лайотов друг в друга, разбивать лайоты на небольшие части и переиспользовать их, загружать лайоты только по мере необходимости;
* Батарея. Несколько простых советов: использовать сетевые запросы и вейклоки (wakelock) как можно реже, с осторожностью использовать GPS и AlarmManager, объединять задачи и выполнять их одновременно.
* Обновление интерфейса. Когда ОС не успевает выполнить работу по обновлению содержимого экрана за 16 миллисекунд происходит ферймдроп - система пропускает один или несколько кадров из-за чего пользователь видит лаги. Выявить узкие места поможет встроенный в Android GPU-профайлер: Settings -> Developer Options -> Profile GPU Rendering (необходимо следить чтобы столбцы не пересекали зеленую черту);
* Время запуска приложения. Простой совет: все, что можно инициализировать позже, нужно инициализировать позже, в том числе интерфейс - сначала отображаем "скелет интерфейса", а затем асинхронно загружаем в него ресурсы (изображения и т.д.);
* Лайоты. Чтобы сделать интерфейс более быстрым для отображения необходимо избегать излишнего вложения лайотов друг в друга, разбивать лайоты на небольшие части и переиспользовать их, загружать лайоты только по мере необходимости;
* Батарея. Несколько простых советов: использовать сетевые запросы и вейклоки (wakelock) как можно реже, с осторожностью использовать GPS и AlarmManager, объединять задачи и выполнять их одновременно.