出内存错误

时间:2016-03-06 07:28:38

标签: android

您好我从学校开始做项目,当我运行我的应用程序时,我的堆栈跟踪错误如下所示。

03-06 14:58:02.520 11265-11265/com.example.ray.cdmsv2 E/AndroidRuntime: FATAL EXCEPTION: main
                                                                        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.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:173)
                                                                            at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:937)
                                                                            at android.graphics.drawable.Drawable.createFromXml(Drawable.java:873)
                                                                            at android.content.res.Resources.loadDrawable(Resources.java:2970)
                                                                            at android.content.res.Resources.getDrawable(Resources.java:1558)
                                                                            at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323)
                                                                            at android.support.v7.widget.TintManager.getDrawable(TintManager.java:147)
                                                                            at android.support.design.widget.TabLayout$Tab.setIcon(TabLayout.java:1080)
                                                                            at com.example.ray.cdmsv2.Activities.CreateTaskActivity.onCreate(CreateTaskActivity.java:102)
                                                                            at android.app.Activity.performCreate(Activity.java:5372)
                                                                            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270)
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2362)
                                                                            at android.app.ActivityThread.access$700(ActivityThread.java:168)
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1329)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                            at android.os.Looper.loop(Looper.java:137)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5493)
                                                                            at java.lang.reflect.Method.invokeNative(Native Method)
                                                                            at java.lang.reflect.Method.invoke(Method.java:525)

我已经四处寻找解决方案,但我仍然无法解决问题。我的应用程序能够在三星Galaxy A3上顺利运行。但是当我试图在S4和Note 4上运行我的应用程序时,我收到内存不足错误。我已经意识到,当我在我的drawable中实现一些选择器,我在我的XML文件中调用时,它将导致错误,但是当我删除它时,错误不再发生。这个问题有什么解释吗?非常感谢你帮助我

3 个答案:

答案 0 :(得分:0)

删除drawable并使用ImageAsset选项再次导入它。

错误是您的图像太重而无法将其加载到内存中。或者在将图像复制到Drawable文件夹之前更好地压缩图像。

答案 1 :(得分:0)

首先,我将通过google在dev docs @上学习内存使用的一些最佳做法 http://developer.android.com/training/displaying-bitmaps/index.html

如果您正在加载大型位图,那么可用的堆内存很可能不足以用于您的位图。

答案 2 :(得分:0)

您的应用程序被Android窒息,因为它使用的内存多于分配的内存,主要是因为大图像文件被用作drawable。

如果是图标,请使用Android Studio内置的图像资源生成器为每种显示类型生成适当的图像大小(mdpi,hdpi,xhdpi,xxhdpi等)。如果是在ImageView上加载的图像,您可以尝试使用Picasso库来自行处理位图内存。