У меня есть приложение для Android, которое выполняет анализ изображения, управление которым осуществляется с помощью IntentService
- процесс занимает пару секунд каждый раз и работает точно и быстро.
Но когда процесс повторяется в приложении примерно в 50 раз (как показано на рисунке), он начинает становиться очень медленным до тех пор, пока приложение и устройство не станут непригодными для использования. Когда устройство перезагружается и приложение открывается снова, оно выполняется как обычно.
Проверка в Android Studio. Я вижу, что каждый раз, когда я запускаю анализ, распределение памяти для приложения увеличивается и увеличивается каждый раз примерно на 1 МБ. Таким образом, у него явно не хватает памяти, когда он падает.
Я использовал этот флаг для завершения анализа и перехода к результату, чтобы исправить фоновые действия;
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
который имеет минимальный эффект, и я понимаю, что IntentService управляет тем, что закрывается. Поэтому не уверен, что еще я могу сделать, чтобы попытаться уменьшить выделение памяти или хотя бы очистить выделение и перестать добавлять к ней?
Дополнительная информация:
- Приложение использует реализацию камеры на основе Google Camera2
- Анализ выполняется с помощью библиотеки С++ через IntentService