android - 在 CircularImageView 上获取 OutOfMemoryError

标签 android android-layout out-of-memory universal-image-loader

我正在使用类 posted on StackOverflow

我刚遇到 OutOfMemoryError:

提供 StackTrace:

android.view.InflateException: Binary XML file line #15: Error inflating class at android.view.LayoutInflater.createView(LayoutInflater.java:626) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702) at android.view.LayoutInflater.rInflate(LayoutInflater.java:761) at android.view.LayoutInflater.rInflate(LayoutInflater.java:769) at android.view.LayoutInflater.inflate(LayoutInflater.java:498) at android.view.LayoutInflater.inflate(LayoutInflater.java:398) at com.flunny.fragments.amici.TrovaAmiciFragment$TrovaAmiciAdapter.getView(TrovaAmiciFragment.java:158) at android.widget.AbsListView.obtainView(AbsListView.java:2608) at android.widget.ListView.makeAndAddView(ListView.java:1852) at android.widget.ListView.fillDown(ListView.java:682) at android.widget.ListView.fillGap(ListView.java:646) at android.widget.AbsListView.trackMotionScroll(AbsListView.java:6592) at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:5575) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791) at android.view.Choreographer.doCallbacks(Choreographer.java:591) at android.view.Choreographer.doFrame(Choreographer.java:560) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777) at android.os.Handler.handleCallback(Handler.java:730) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:176) 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:1046) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.constructNative(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:417) at android.view.LayoutInflater.createView(LayoutInflater.java:600) ... 25 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.TypedArray.getDrawable(TypedArray.java:602) at android.widget.ImageView.(ImageView.java:131) at com.flunny.resources.CircularImageView.(CircularImageView.java:33) at com.flunny.resources.CircularImageView.(CircularImageView.java:29) ... 28 more

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加载但它们不超过 20 kb

提前致谢。

最佳答案

可能是您正在使用 ListView 并且您正在一次又一次地初始化您的 ImageView

public View getView(int position, View convertView, ViewGroup parent) {

        View listitem = convertView;
        int pos = position;

        if (convertView == null) {
            /** Inflating the List Item below */

            /** Getting the Image View of Listitem below */
            textOfRank = (TextView) listitem
                    .findViewById(R.id.textview_of_Rank);
            textOfErrors = (TextView) listitem
                    .findViewById(R.id.textview_of_Errors);
            textOfMode = (TextView) listitem
                    .findViewById(R.id.textview_of_Mode);
            textOfTime = (TextView) listitem
                    .findViewById(R.id.textview_of_Time);

        }
}

如果我没记错,那么只需在您的适配器类中初始化您的 ImageView 或任何东西,谢谢您,这可能会对您有所帮助

关于android - 在 CircularImageView 上获取 OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23914421/

相关文章:

android - 闪屏功能

android - Android 应用程序的 Activity 和 View 设置 - 我应该为每个页面创建新 Activity 吗?

Android studio 3.6.1,布局未在编辑器中打开。 Studio 不显示 XML 编辑器只显示布局的设计部分?

android - 如何在 RecyclerView 项目下方显示弹出窗口?

android - 在 Android Studio XML 的预览部分显示自定义字体或 View

R 将非常大的数据表列表合并到一个 data.table 中

java - 如何添加mcxiaoke.volley:library

android - Jetpack compose 中的 onPressIn 和 onPressOut

java - 使用以下递归方法时出现 java.lang.OutOfMemoryError 异常

java - Android 位图图像内存不足