我有一个Android应用程序,执行图像分析,使用IntentService
进行管理 - 每次处理需要几秒钟时间,工作精确且快速。
但是,当在应用程序中重复该过程约50次(如所示),它开始变得非常缓慢,直到应用程序和设备变得无法使用。当重新启动设备并再次打开应用程序时,它会像往常一样运行。
使用Android Studio检查,每次运行分析时,我可以看到应用程序的内存分配每次都会增加约1MB。因此,当它崩溃时,显然已经耗尽了内存。
我已经在完成分析并进入结果时使用了此标志,以尝试修复后台活动;
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
虽然我知道IntentService会自行关闭管理,但它的影响很小。所以我不确定还能做什么来尝试减少内存分配,或者至少清理分配并停止添加到其中的内容?
更多细节:
- 应用程序正在使用基于Google Camera2的相机实现
- 通过IntentService使用C++库进行分析。
Runtime.getRuntime().gc();
- Grisgram