android loadIcon生成outOfMemoryError

我只有一个ListView包含所有已安装的应用程序及其图标
但如果安装的应用程序太多,我outOfMemoryErrors在执行时遇到outOfMemoryErrors

 Drawable app_icon = applicationInfoList.get(i).loadIcon(context.getPackageManager())); 

每个ListEntry (这一行写在我的ListAdapter

到目前为止没问题,我明白为什么我遇到这个错误(加载的图标太多,vm堆太少)
但我在设置中查看了机器人管理应用ManageApplications活动的源代码
在使用ManageApps设置时,我从未遇到任何这些错误
但奇怪的是,他们完全采用相同的方式

你可以在这里看到他们的来源:
ManageApplications活动
Drawable icon加载的位置
它在列表视图中设置的位置

但我真的不明白为什么我会得到一个oom而他们不?

将图标大小调整为小图片,你会没事的! (之前也遇到过这个问题)

自己解决了。
我现在正在使用它之前将每个图像加载到缓存中。
如果缓存已满,最旧的元素将被丢弃,
所以新的可以缓存。 此外,我将我的图像调整为较小的图标。
做到了。