我的应用程序的一个主要问题是崩溃,由于我的应用程序包含大量内容(它是内容共享站点客户端),因此会发生很多事情。我得到很多内存错误,我可以使用高达170-180 MB的ram,这很荒谬。
http://i.gyazo.com/6cd53e6cf6f0a9bfdd6a24b323a70b09.gif http://gyazo.com/b64d50f76b2ef608954a6d6cdd5d52d0
这些截图只是加载25个提交并滚动它们。
我目前的设置是这样的:LruCache,大小为
(Runtime.getRuntime().maxMemory() / 1024) / 8
处理所有提交图像。当我加载提交照片或缩略图时,它会进入该缓存。相册由位图的简单ArrayAdapter和WeakHashMap存储处理,因为它很少被调用(每25-30个帖子中有1个包含一个相册)。 GIF通过GfyCat流式传输到VideoView,GIF或专辑不会发生真正的崩溃。当我滚动时会出现真正的错误,这很奇怪,因为我一次将图像加载到LruCache中以节省移动无线电时间(电池改进)。
问题似乎是android试图将更多的东西放入LruCache,因为我得到这样的错误
java.lang.OutOfMemoryError: Failed to allocate a 3169972 byte allocation with 1400991 free bytes and 1368KB until OOM
即使我的LruCache大小是24576kb。
我正确处理内存吗?我可以采取哪些措施来提高稳定性,同时保持应用程序的快速性? 谢谢!
答案 0 :(得分:1)
您甚至可以使用此配置进一步增强毕加索
Picasso.with(this)
.load(YOUR_URL)
.config(Bitmap.Config.RGB_565).fit()
.into((ImageView) findViewById(
R.id.frame_main_main_layout));
它将减少分配内存并提高性能
答案 1 :(得分:0)
我最终从Ion图像加载库切换到Picasso,并通过自动缓存节省了33%的ram使用量,因此我摆脱了LruCache和我的所有商店,现在它比以往更好地工作了!