J'ai une application android qui effectue l'analyse d'image, qui est géré avec un IntentService
- le processus ne prend que quelques secondes à chaque fois et fonctionne rapidement et avec précision.
Mais lorsque le processus est répété dans l'application autour de 50 fois (comme illustré) il commence à faire très lente jusqu'à ce que le point dans lequel l'application et de l'appareil devient inutilisable. Lorsque l'appareil est redémarré et de l'application s'ouvre à nouveau, il fonctionne comme d'habitude.
Inspecter avec Android Studio, je peux voir que chaque fois que je lance l'analyse que l'allocation de mémoire pour l'application passe-haut à chaque fois d'environ 1 MO. C'est donc clairement à court de mémoire quand il se bloque.
J'ai utilisé cet indicateur sur la finition de l'analyse et d'aller à la résultat à essayer de corriger activités d'arrière-plan;
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
qui a eu un effet minime, et je comprends la IntentService gère lui-même de l'arrêter. Donc, pas sûr que ce que je peux faire pour essayer de réduire l'allocation de mémoire ou au moins de dégager de répartition et d'arrêter d'en ajouter?
Plus de détails:
- L'application utilise la caméra de mise en œuvre basé sur Google la caméra 2
- L'analyse est effectuée avec une bibliothèque C++ grâce à la IntentService