Как определить код, вызывающий перегрузки процессора и проблемы с нагревом в приложении Android?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как определить код, вызывающий перегрузки процессора и проблемы с нагревом в приложении Android?

Сообщение Anonymous »

Я сталкиваюсь с повторяющейся проблемой, когда мое приложение для Android вызывает высокую загрузку ЦП и нагрев устройства, особенно когда работают фоновые службы.
Приложение включает в себя несколько фоновых компонентов, таких как:
  • Сервисы переднего плана (получение информации об устройстве, местоположении, SMS, журналов вызовов и т. д.)
  • RxJava Observables и сопрограммы (выполнение периодических задач)
  • Операции чтения/записи базы данных помещений
  • Задания WorkManager (для периодической синхронизации)
Со временем я заметил:
  • Загрузка процессора возрастает до 300–800 % при максимальной производительности -H.
  • Температура устройства быстро возрастает (особенно на телефонах среднего класса).
  • Батарея разряжается быстрее, чем ожидалось.
  • Трассы ANR показывают несколько активных потоков в DefaultDispatcher или RxComputationThreadPool.
  • Некоторые тяжелые операции перенесены из основного потока в Dispatchers.IO или ограничены планировщики.
  • Добавлены задержки между периодическими синхронизациями, чтобы избежать дублирования.
  • Использовались lifecycleScope и viewModelScope, чтобы избежать неограниченных сопрограмм.
  • Ограничено Пулы потоков RxJava (

    Код: Выделить всё

    Schedulers.io()
    заменен на собственный AppSchedulers.ioBounded).
  • Снижена частота WorkManager и добавлены ограничения.
  • Отслеживается с помощью Android Profiler, трассировки ЦП и памяти.
Тем не менее, проблемы с процессором и температурой сохраняются.

Что мне хотелось бы знать:
  • Какой наиболее надежный способ определить точную функцию или поток, вызывающие высокую загрузку процессора или перегрев?
  • Как я могу обнаружить взрыв потока или чрезмерное создание сопрограмм во время выполнения?
  • Каковы лучшие методы для профилирования, оптимизации и снижения нагрева в приложениях, которые полагаются на несколько фоновых служб и на основе Rx/Coroutine петли синхронизации?


Подробнее здесь: https://stackoverflow.com/questions/797 ... applicatio
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»