App RunTime崩溃 - 不幸停止了

时间:2018-04-13 18:54:17

标签: java debugging crash runtime logcat

我的主屏幕包含4个ImageView,每个ImageView都会将用户发送到类别活动,然后发送额外数据以显示ListView中的内容,但是一旦我点击任何ImageView,应用程序就会停止工作,并向我显示此错误消息logcat的。 谁知道这是什么意思?

  

块引用   04-13 21:43:53.337 15929-15929 / com.ibuilder.the50recipes E / AndroidRuntime:FATAL EXCEPTION:main                                                                              过程:com.ibuilder.the50recipes,PID:15929                                                                              java.lang.OutOfMemoryError:无法分配25600012字节分配9652808个空闲字节和9MB直到OOM                                                                                  at dalvik.system.VMRuntime.newNonMovableArray(Native Method)                                                                                  在android.graphics.BitmapFactory.nativeDecodeAsset(本机方法)                                                                                  在android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:620)                                                                                  在android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:455)                                                                                  在android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1152)                                                                                  在android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:855)                                                                                  在android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:706)                                                                                  在android.content.res.Resources.getDrawable(Resources.java:776)                                                                                  在android.content.Context.getDrawable(Context.java:530)                                                                                  在android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:351)                                                                                  在android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:200)                                                                                  在android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:188)                                                                                  在android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:100)                                                                                  在android.support.v7.widget.AppCompatImageHelper.setImageResource(AppCompatImageHelper.java:85)                                                                                  在android.support.v7.widget.AppCompatImageView.setImageResource(AppCompatImageView.java:94)                                                                                  在com.ibuilder.the50recipes.Category_New $ CustomAdapter.getView(Category_New.java:659)                                                                                  在android.widget.AbsListView.obtainView(AbsListView.java:2406)                                                                                  在android.widget.ListView.makeAndAddView(ListView.java:1975)                                                                                  在android.widget.ListView.fillDown(ListView.java:709)                                                                                  在android.widget.ListView.fillFromTop(ListView.java:770)                                                                                  在android.widget.ListView.layoutChildren(ListView.java:1749)                                                                                  在android.widget.AbsListView.onLayout(AbsListView.java:2205)                                                                                  在android.view.View.layout(View.java:17564)                                                                                  在android.view.ViewGroup.layout(ViewGroup.java:5654)                                                                                  在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)                                                                                  在android.widget.LinearLayout.layoutHorizo​​ntal(LinearLayout.java:1730)                                                                                  在android.widget.LinearLayout.onLayout(LinearLayout.java:1496)                                                                                  在android.view.View.layout(View.java:17564)                                                                                  在android.view.ViewGroup.layout(ViewGroup.java:5654)                                                                                  在android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)                                                                                  在android.view.View.layout(View.java:17564)                                                                                  在android.view.ViewGroup.layout(ViewGroup.java:5654)                                                                                  在android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)                                                                                  在android.widget.FrameLayout.onLayout(FrameLayout.java:261)                                                                                  在android.view.View.layout(View.java:17564)                                                                                  在android.view.ViewGroup.layout(ViewGroup.java:5654)                                                                                  在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)                                                                                  在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)                                                                                  在android.widget.LinearLayout.onLayout(LinearLayout.java:1494)                                                                                  在android.view.View.layout(View.java:17564)                                                                                  在android.view.ViewGroup.layout(ViewGroup.java:5654)                                                                                  在android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)                                                                                  在android.widget.FrameLayout.onLayout(FrameLayout.java:261)                                                                                  在android.view.View.layout(View.java:17564)                                                                                  在android.view.ViewGroup.layout(ViewGroup.java:5654)                                                                                  在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)                                                                                  在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)                                                                                  在android.widget.LinearLayout.onLayout(LinearLayout.java:1494)                                                                                  在android.view.View.layout(View.java:17564)                                                                                  在android.view.ViewGroup.layout(ViewGroup.java:5654)                                                                                  在android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)                                                                                  在android.widget.FrameLayout.onLayout(FrameLayout.java:261)                                                                                  在com.android.internal.policy.DecorView.onLayout(DecorView.java:725)                                                                                  在android.view.View.layout(View.java:17564)                                                                                  在android.view.ViewGroup.layout(ViewGroup.java:5654)                                                                                  在android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2406)                                                                                  在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2126)   04-13 21:43:53.337 15929-15929 / com.ibuilder.the50recipes E / AndroidRuntime:at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1286)                                                                                  在android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:6536)                                                                                  在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:871)                                                                                  在android.view.Choreographer.doCallbacks(Choreographer.java:683)                                                                                  在android.view.Choreographer.doFrame(Choreographer.java:619)                                                                                  在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:857)                                                                                  在android.os.Handler.handleCallback(Handler.java:751)                                                                                  在android.os.Handler.dispatchMessage(Handler.java:95)                                                                                  在android.os.Looper.loop(Looper.java:154)                                                                                  在android.app.ActivityThread.main(ActivityThread.java:6247)                                                                                  at java.lang.reflect.Method.invoke(Native Method)                                                                                  在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:872)                                                                                  在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

2 个答案:

答案 0 :(得分:0)

看起来它正在尝试分配25 MB的内存,而它只有9 MB的内存,直到内存不足。

您可能需要了解如何更有效地加载大型位图:

https://developer.android.com/topic/performance/graphics/load-bitmap.html

从那里开始说明如何有效地加载资源:

public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,
        int reqWidth, int reqHeight) {

    // First decode with inJustDecodeBounds=true to check dimensions
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeResource(res, resId, options);

    // Calculate inSampleSize
    options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

    // Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = false;
    return BitmapFactory.decodeResource(res, resId, options);
}

答案 1 :(得分:0)

尝试使用https://tinypng.com/来优化图像。您的图片资源太大。