Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 需要帮助管理内存吗_Android_Memory_Bitmap - Fatal编程技术网

Android 需要帮助管理内存吗

Android 需要帮助管理内存吗,android,memory,bitmap,Android,Memory,Bitmap,我的应用程序的一个主要问题是崩溃,这种情况经常发生,因为我的应用程序包含大量内容(它是一个内容共享网站客户端)。我有很多内存错误,我可以使用高达170-180 MB的ram,这是荒谬的 这些截图只需加载25份提交并滚动浏览即可 我当前的设置如下:大小为的LruCache (Runtime.getRuntime().maxMemory()/1024)/8 它处理所有提交图像。当我加载提交照片或缩略图时,它会进入缓存。相册由一个简单的ArrayAdapter和WeakHashMap位图存储处理,因

我的应用程序的一个主要问题是崩溃,这种情况经常发生,因为我的应用程序包含大量内容(它是一个内容共享网站客户端)。我有很多内存错误,我可以使用高达170-180 MB的ram,这是荒谬的

这些截图只需加载25份提交并滚动浏览即可

我当前的设置如下:大小为的LruCache

(Runtime.getRuntime().maxMemory()/1024)/8

它处理所有提交图像。当我加载提交照片或缩略图时,它会进入缓存。相册由一个简单的ArrayAdapter和WeakHashMap位图存储处理,因为很少调用它(每25-30篇文章中可能有1篇包含相册)。GIF通过GfyCat传输到视频视图,GIF或相册上不会发生真正的崩溃。真正的错误发生在我滚动时,这很奇怪,因为我一次将图像加载到LruCache以节省移动广播时间(电池改进)

问题似乎是android试图在LruCache中投入更多,因为我会遇到这样的错误

java.lang.OutOfMemoryError:无法分配3169972字节的分配,其中包含1400991个可用字节和1368KB,直到OOM

即使我的LruCache大小是24576kb

我处理内存是否正确?我可以采取哪些步骤来提高稳定性,同时保持应用程序的速度?
谢谢

我最终从Ion图像加载库切换到了毕加索,并通过自动缓存节省了33%的ram使用量,因此我摆脱了LruCache和我所有的商店,现在它比以往任何时候都好

您甚至可以通过使用此配置进一步增强毕加索

Picasso.with(this)
            .load(YOUR_URL)
            .config(Bitmap.Config.RGB_565).fit()
            .into((ImageView) findViewById(
                    R.id.frame_main_main_layout));

这将减少内存分配并提高性能

加载位图时是否缩放位图?这到底有什么作用?看起来很有趣!fit()使毕加索只使用适合您的图像视图的大小,而不分配,比如说大图像如果您将其用作缩略图,那么您将减少对大图像的分配。config(Bitmap.config.RGB_565)将位图的配置更改为16位,而不是32位。这将增强内存并减少分配。试试看。