use*_*692 6 android android-memory
我试图围绕图片文件解码,但它无法捕获内存不足异常,并且应用程序崩溃.
我知道解码图片文件的一些技巧,比如子采样.但是我需要放大图片来查看细节,所以我不能对它进行过多的子采样.对于某些较新的设备,它可以成功分配更大的内存以避免内存不足异常.
对于一些较旧的设备,它不能.
如果我可以为不同的设备自定义我的应用程序,那将会很大.
所以我想:(1)我希望我可以解决内存不足异常,所以如果我抓住它,我可以减少图像大小.(2)或者,我希望我可以获得可用内存的大小进行分配.
我在网上搜索,找不到答案.
首先,您可以在堆栈跟踪中看到抛出OutOfMemoryError的位置.如果你没有捕获它,那要么是因为a)你正在捕获Exception而不是Throwable,或者b)错误被抛出到了其他地方而不是你有catch语句的地方.使用OutOfMemoryError,您无法保证它将被抛出的位置.通常它是处理位图的地方,但它可能是另一个同时分配内存的线程.
获取设备上的可用内存非常简单:http://developer.android.com/reference/android/app/ActivityManager.html#getMemoryClass()
如果您还没有看到它们,那么Android团队会有很多关于位图和内存的文章:http://developer.android.com/training/displaying-bitmaps/index.html
祝好运!