您好我从学校开始做项目,当我运行我的应用程序时,我的堆栈跟踪错误如下所示。
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文件中调用时,它将导致错误,但是当我删除它时,错误不再发生。这个问题有什么解释吗?非常感谢你帮助我
答案 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库来自行处理位图内存。