Android – E / Surface: queueBuffer: buffer de cola de errores en SurfaceTexture, -22 crash

Necesitaba ayuda en la depuración de mi y averiguar por qué mi aplicación Android sigue fallando. La aplicación se bloquea en una página que tiene una vista de lista y cada fila de vista de lista tiene una imagen y un poco de texto en ella. He creado una clase del escondrijo para almacenar todos los mapas de bits de las imágenes en el listview. Después de permanecer durante una hora en esa página (la página con el listview) la aplicación se bloquea y esto es lo que veo en la consola de Logcat. No puedo entender cómo este accidente está sucediendo, cualquier sugerencia o sugerencia sobre su causa raíz será extremadamente útil. Me disculpo si la información es insuficiente.

07-21 00:47:07.143 2047-2423/com.app E/Parcel﹕ Parcel::writeDupFileDescriptor failed: fd=931 flags=0 err=0(Success) dupFd=-1 dupErr=24(Too many open files) flags=-1 err=9(Bad file number) 07-21 00:47:07.172 2047-2423/com.app E/Surface﹕ queueBuffer: error queuing buffer to SurfaceTexture, -22 07-21 00:47:07.172 2047-2423/com.app W/Adreno-EGLSUB﹕ <SwapBuffers:1344>: failed to queueBuffer 07-21 00:47:07.172 2047-2423/com.app W/Adreno-EGL﹕ <qeglDrvAPI_eglSwapBuffers:3791>: EGL_BAD_SURFACE 07-21 00:47:07.595 2047-2423/com.app E/Parcel﹕ Parcel::writeDupFileDescriptor failed: . (the same error as above gets repeated a couple of times) . . 07-21 00:47:11.685 2047-2423/com.app W/Adreno-EGLSUB﹕ <SwapBuffers:1344>: failed to queueBuffer 07-21 00:47:11.685 2047-2423/com.app W/Adreno-EGL﹕ <qeglDrvAPI_eglSwapBuffers:3791>: EGL_BAD_SURFACE 07-21 00:47:12.128 2047-2423/com.app W/Adreno-GSL﹕ <gsl_ldd_control:416>: ioctl fd 28 code 0xc0140933 (IOCTL_KGSL_TIMESTAMP_EVENT) failed: errno 24 Too many open files . (the same error as above gets repeated a couple of times) . . 07-21 00:47:17.839 2047-2047/com.app W/InputMethodManager﹕ IME died: com.android.inputmethod.latin/.LatinIME android.os.TransactionTooLargeException 

También estoy agregando mi diseño xml si es útil

 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/framelayout" android:background="@color/black"> <ImageView android:layout_width="225dp" android:layout_height="225dp" android:alpha="0.3" android:id="@+id/background_image" android:layout_gravity="center" android:background="@drawable/visual_background_animation_list"/> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start"> <!-- The main content view --> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:id="@+id/top_header" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:background="@drawable/background_holo_dark"> <ImageView android:id="@+id/play_pause_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true"/> <SeekBar android:layout_marginLeft="75dp" android:id="@+id/seek_bar" android:layout_width="match_parent" android:layout_height="wrap_content"/> <ImageView android:id="@+id/nxt" android:layout_width="60dp" android:layout_height="60dp" android:layout_alignParentRight="true"/> <TextView android:layout_alignLeft="@+id/nxt" android:layout_below="@+id/seek_bar" android:id="@+id/curr" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_alignRight="@+id/nxt" android:layout_below="@+id/seek_bar" android:id="@+id/curr_2" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RelativeLayout> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/top_header"> <ListView android:id="@+id/another_list" android:layout_width="match_parent" android:layout_height="match_parent"/> </FrameLayout> </RelativeLayout> <!-- The navigation drawer --> <RelativeLayout android:id="@+id/drawer" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="@android:color/darker_gray" android:orientation="vertical"> <ListView android:id="@+id/another_list_2" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:choiceMode="singleChoice" /> </RelativeLayout> </android.support.v4.widget.DrawerLayout> </FrameLayout> 

También quería mencionar que tengo una lista de animación que se ejecuta y se muestra como imagen de fondo de esta aplicación.

Disposición del cajón de navegación

Diseño para el cajón de navegación

 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TableRow> <TextView android:id="@+id/name1"/> </TableRow> <TableRow> <TextView android:id="@+id/name2"/> </TableRow> </TableLayout> 

Y el diseño del listview

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="invisible"> <ImageView android:id="@+id/image_on_left" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RelativeLayout android:id="@+id/relative_layout_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/image_on_left"> <TextView android:id="@+id/title1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RelativeLayout android:id="@+id/relative_layout_title2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/title1"> <TextView android:id="@+id/title2" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RelativeLayout> <ImageView android:id="@+id/another_image" android:layout_alignParentRight="true"/> </RelativeLayout> </RelativeLayout> 

Hice algunas investigaciones en la red y en mi código y descubrí que había muchas fugas de memoria. He cambiado algunas cosas para deshacerse de ese error.

  1. Me aseguré de que mi contexto no estaba siendo almacenado en caché en ninguna de mis clases de ayuda (básicamente mis clases de utilidad)

  2. También no estaba usando una clase de titular en mi listview

Así que agregué la declaración siguiente en mi clase del adaptador de encargo

  static class ViewHolder { TextView name; ImageView imageView; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = new ViewHolder(); .... convertView.setTag(viewHolder); } 
  • Mejor manera de mostrar datos de flujo en la vista de lista de Android
  • Cómo deslizar imágenes en ViewFlipper o ViewPager
  • Malo rendimiento al dibujar continuamente en CustomView
  • Rendimiento de Android ContentProvider
  • ¿Por qué ITelephony.aidl funciona?
  • Acceder directamente a los campos estáticos en lugar de llamar a un método getter estático, ¿es más rápido?
  • Impacto de 'instanceof' en el código Java de Android
  • Posible BUG en Android Clase ImageDownloader: sHardBitmapCache NO estática cuando debería ser?
  • Aplicación que se bloquea sólo en dispositivos lollipop
  • ¿Cómo implementar correctamente el feed (similar a Facebook / Instagram) en Android?
  • Eficiencia de Android: vistas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.