Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.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/1/typescript/9.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 - Fatal编程技术网

Android是否需要从文件中加载完整的位图,然后再对其进行采样?

Android是否需要从文件中加载完整的位图,然后再对其进行采样?,android,Android,In:-有消息称,对位图进行采样仍可能导致内存错误 这个问题对新版本的Android仍然有效吗 这是否意味着在采样之前,Android需要将全尺寸位图加载到内存中?我相信这会使用本机内存,因为图像处理是在本机代码中实现的。较新版本可能有更多的物理内存,但它仍然限于系统堆栈大小;这样,编程位图仍然需要非常小心地使用内存量 在这几年的谷歌I/O(2012年)上,有一个名为“少花钱多办事”的精彩演讲,展示了一些非常好的缓存技术,你应该研究一下。我相信你可以在YouTube Android开发者帐户上找

In:-有消息称,对位图进行采样仍可能导致内存错误

这个问题对新版本的Android仍然有效吗


这是否意味着在采样之前,Android需要将全尺寸位图加载到内存中?我相信这会使用本机内存,因为图像处理是在本机代码中实现的。

较新版本可能有更多的物理内存,但它仍然限于系统堆栈大小;这样,编程位图仍然需要非常小心地使用内存量

在这几年的谷歌I/O(2012年)上,有一个名为“少花钱多办事”的精彩演讲,展示了一些非常好的缓存技术,你应该研究一下。我相信你可以在YouTube Android开发者帐户上找到这段视频


找到视频:

以下是获取可用内存量的方法:

Runtime.getRuntime().maxMemory()
下面是一个关于记忆的有趣博客:

安卓的问题是,你永远不知道什么时候会运行内存不足的应用程序,应用程序就会崩溃。这就是为什么您应该尽量避免加载太大的BIMAP(我通常使用最大值800/600或类似值,具体取决于屏幕方向……)

如果加载多个位图(如图库或其他视图组),则应使用弱引用:

另外,如果查看提供的链接中的示例,缩放首先仅解码边界,然后决定使用的缩放

当您不再需要位图时,请调用:

 bitmap.recycle();

不要使用WeakReference!我在视频中提到的一个建议/技术是,WeakReference在这方面不是很好,即使你大量使用。它指出并显示了可在兼容包中使用LruCache的代码。视频如下: