【发布时间】:2014-05-28 14:27:46
【问题描述】:
我正在使用课程posted on StackOverflow
我刚刚遇到了 OutOfMemoryError:
提供 StackTrace:
android.view.InflateException:二进制 XML 文件第 15 行:错误 膨胀类 android.view.LayoutInflater.createView(LayoutInflater.java:626) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:761) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:769) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:498) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:398) 在 com.flunny.fragments.amici.TrovaAmiciFragment$TrovaAmiciAdapter.getView(TrovaAmiciFragment.java:158) 在 android.widget.AbsListView.obtainView(AbsListView.java:2608) 在 android.widget.ListView.makeAndAddView(ListView.java:1852) 在 android.widget.ListView.fillDown(ListView.java:682) 在 android.widget.ListView.fillGap(ListView.java:646) 在 android.widget.AbsListView.trackMotionScroll(AbsListView.java:6592) 在 android.widget.AbsListView$FlingRunnable.run(AbsListView.java:5575) 在 android.view.Choreographer$CallbackRecord.run(Choreographer.java:791) 在 android.view.Choreographer.doCallbacks(Choreographer.java:591) 在 android.view.Choreographer.doFrame(Choreographer.java:560) 在 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777) 在 android.os.Handler.handleCallback(Handler.java:730) 在 android.os.Handler.dispatchMessage(Handler.java:92) 在 android.os.Looper.loop(Looper.java:176) 在 android.app.ActivityThread.main(ActivityThread.java:5419) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:525) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 在 dalvik.system.NativeStart.main(Native Method) 原因: java.lang.reflect.InvocationTargetException 在 java.lang.reflect.Constructor.constructNative(Native Method) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:417) 在 android.view.LayoutInflater.createView(LayoutInflater.java:600) ... 25 更多原因:java.lang.OutOfMemoryError at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 在 android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596) 在 android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) 在 android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:832) 在 android.content.res.Resources.loadDrawable(Resources.java:2988) 在 android.content.res.TypedArray.getDrawable(TypedArray.java:602) 在 android.widget.ImageView.(ImageView.java:131) 在 com.flunny.resources.CircularImageView.(CircularImageView.java:33) 在 com.flunny.resources.CircularImageView.(CircularImageView.java:29) ... 还有 28 个
XML #15 是:
<com.flunny.resources.CircularImageView
android:id="@+id/circularImageView1"
android:layout_width="@dimen/trovaAmiciImmagineAltezza"
android:layout_height="@dimen/trovaAmiciImmagineAltezza"
android:layout_centerVertical="true"
android:src="@drawable/sconosciuto" />
CircularImageView #33 和 #29:
public CircularImageView(Context context, AttributeSet attrs) {
this(context, attrs, R.attr.circularImageViewStyle); // 29
}
public CircularImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle); // 33
................
图像未设置,它之前(或没有?)崩溃。 默认图像 (@drawable/sconosciuto) 有 2,9kb (111px x 111px)。
其余图片由ImageLoader加载但不超过20kb
提前致谢。
【问题讨论】:
-
你在使用示例代码吗>
-
磁盘大小无关紧要。重要的是图片的宽度和高度。位图需要 width*height*4 字节存储在内存中。
-
@blackbelt (111px x 111px),我不习惯加载超过 500px 宽度的图片
-
是不是因为包名。您需要在 xml com.flunny.fragments.amici 和 com.flunny.resources.CircularImageView 中提供完整的包名称
标签: android android-layout out-of-memory universal-image-loader