在将图像加载到textview时克服内存不足错误

时间:2013-05-08 14:47:23

标签: android bitmap out-of-memory

很抱歉,如果这听起来很新,但是.. = [

我正在使用需要将大量图像加载到textview上的应用程序,我没有使用webview becuz有时它不会导致移动视图所以我决定解析内容并使用html.fromHtml将其显示给TextView的。

问题是: 如果我加载一个页面幸运的是没有太多的图像,它运行得非常顺利。 否则会得到如下错误......

任何人都知道我是否可以在读完图像后从系统内存中处理来源?...或者......任何其他方式都可以解决我的问题?

我使用了来自Android ImageGetter images overlapping text

的来源
    05-08 21:30:31.404: ERROR/dalvikvm-heap(25083): Out of memory on a 1920016-byte allocation.
    05-08 21:30:31.404: ERROR/AndroidRuntime(25083): FATAL EXCEPTION: AsyncTask #10
    java.lang.RuntimeException: An error occured while executing doInBackground()
    at android.os.AsyncTask$3.done(AsyncTask.java:299)
    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
    at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
    at java.lang.Thread.run(Thread.java:856)
    Caused by: java.lang.OutOfMemoryError
    at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:527)
    at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:353)
    at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:781)
    at android.graphics.drawable.Drawable.createFromStream(Drawable.java:741)
    at com.vilalab.five.model.URLImageParser$ImageGetterAsyncTask.fetchDrawable(URLImageParser.java:90)
    at com.vilalab.five.model.URLImageParser$ImageGetterAsyncTask.doInBackground(URLImageParser.java:58)
    at com.vilalab.five.model.URLImageParser$ImageGetterAsyncTask.doInBackground(URLImageParser.java:48)
    at android.os.AsyncTask$2.call(AsyncTask.java:287)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
    ... 4 more
   05-08 21:30:31.504: ERROR/dalvikvm-heap(25083): Out of memory on a 1920016-byte allocation.

1 个答案:

答案 0 :(得分:0)

查看this post,它使用从SD卡/图库中获取图片的示例,了解如何对图像进行缩减采样,以避免出现此问题。这是一个非常简单的修复。