退房BitmapFactory内存不足的错误 [英] Out of memory error in BitmapFactory
问题描述
今天,我得到了我的应用程序崩溃,内存不足错误。
java.lang.OutOfMemoryError结果
在android.graphics.BitmapFactory.nativeDe $ C $检测板
块引用>我只用位图厂做一个研究背景,以我的行动吧。
在code:
BitmapDrawable背景=新BitmapDrawable(BitmapFactory.de codeResource(getResources(),R.drawable.actionbar));
background.setTileModeX(android.graphics.Shader.TileMode.REPEAT);
actionbar.setBackgroundDrawable(背景);这个错误不会在活动开始happend,它改变activites了很多之后会发生。
有人能告诉我如何解决这个问题。
编辑编辑修改
下面是开发者控制台的错误消息:
java.lang.IllegalStateException:无法执行活动的方法
在android.view.View $ 1.onClick(View.java:3838)
在android.view.View.performClick(View.java:4475)
在android.view.View $ PerformClick.run(View.java:18786)
在android.os.Handler.handleCallback(Handler.java:730)
在android.os.Handler.dispatchMessage(Handler.java:92)
在android.os.Looper.loop(Looper.java:137)
在android.app.ActivityThread.main(ActivityThread.java:5419)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:525)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1187)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
在dalvik.system.NativeStart.main(本机方法)
java.lang.reflect.InvocationTargetException:产生的原因
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:525)
在android.view.View $ 1.onClick(View.java:3833)
... 11更多
java.lang.OutOfMemoryError:产生的原因
在android.graphics.BitmapFactory.nativeDe $ C $检测板(本机方法)
在android.graphics.BitmapFactory.de codeStream(BitmapFactory.java:596)
在android.graphics.BitmapFactory.de codeResourceStream(BitmapFactory.java:444)
在android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:832)
在android.content.res.Resources.loadDrawable(Resources.java:2988)
在android.content.res.Resources.getDrawable(Resources.java:1558)
在android.widget.ImageView.resolveUri(ImageView.java:646)
在android.widget.ImageView.setImageResource(ImageView.java:375)
在com.packagename.pp.Activitytwo.disableAnswer(Activitytwo.java:435)
在com.packagename.pp.Activitytwo.submitAnswer(Activitytwo.java:230)
... 14个
解决方案您对您的code内存泄漏。考虑使用了WeakReference 的,的 WeakHashMap中或的 SoftReference的以避免强烈的引用。免费使用的资源和活动onLowMemory方法变量。
您也可以使用该选项 BitmapFactory.Options 以德code中的位图显示的例子这里。
我张贴的一些线索来解决这个问题<一href=\"https://stackoverflow.com/questions/25344518/outofmemory-exception-not-sure-android/25344553#25344553\">here.
Today I got my app crashed, Out of memory error.
java.lang.OutOfMemoryError
in android.graphics.BitmapFactory.nativeDecodeAssetI only used Bitmap Factory to make a backgroud to my action bar
The code:
BitmapDrawable background = new BitmapDrawable (BitmapFactory.decodeResource(getResources(), R.drawable.actionbar)); background.setTileModeX(android.graphics.Shader.TileMode.REPEAT); actionbar.setBackgroundDrawable(background);
This error doesn't happend on activity start, it happens after changing in activites a lot.
Can someone show me how to fix this
EDIT EDIT EDIT
Here is the error message in developer console:
java.lang.IllegalStateException: Could not execute method of the activity at android.view.View$1.onClick(View.java:3838) at android.view.View.performClick(View.java:4475) at android.view.View$PerformClick.run(View.java:18786) at android.os.Handler.handleCallback(Handler.java:730) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5419) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at android.view.View$1.onClick(View.java:3833) ... 11 more Caused by: java.lang.OutOfMemoryError at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596) at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:832) at android.content.res.Resources.loadDrawable(Resources.java:2988) at android.content.res.Resources.getDrawable(Resources.java:1558) at android.widget.ImageView.resolveUri(ImageView.java:646) at android.widget.ImageView.setImageResource(ImageView.java:375) at com.packagename.pp.Activitytwo.disableAnswer(Activitytwo.java:435) at com.packagename.pp.Activitytwo.submitAnswer(Activitytwo.java:230) ... 14 more
解决方案You have a memory leak on your code. Consider the use of WeakReference, WeakHashMap or SoftReference to avoid strong references. Free unused resources and variables on onLowMemory method of activities.
Also you can use the option BitmapFactory.Options to decode the bitmap as show the examples here.
I posted the some hints to solve this problem here.
这篇关于退房BitmapFactory内存不足的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!