2015-07-21 698 views
4

我需要一些帮助来调试我的,并找出为什么我的android应用程序不断崩溃。该应用程序在具有listview的页面上崩溃,并且每个listview行都有一个图像和一些文本。我创建了一个缓存类,用于在列表视图中存储所有图像的位图。在那个页面上停留了一个小时(带有列表视图的页面)之后,应用程序崩溃了,这就是我在Logcat控制台中看到的内容。我无法理解这次事故是如何发生的,任何关于其根本原因的提示或任何建议都将非常有帮助。如果信息不足,我很抱歉。Android - E/Surface:queueBuffer:错误排队缓冲区到SurfaceTexture,-22崩溃

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 

我也在我的XML布局,如果这是任何有帮助的

<?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> 

我也想提一提,我有它运行,并正在显示该应用程序的背景图像动画列表。抽屉式导航栏的

的Layout布局导航抽屉

<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> 

和列表视图的布局

<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> 
+0

你能提供代码getView满足在列表适配器? – Shakti

+0

@redsnowfox我添加了我的导航抽屉的布局,也是列表视图 – anonymous123

+0

我只是想检查您是否正确地填充视图。特别是你关闭你正在使用或不使用的打开的文件描述符。 – Shakti

回答

1

我没发现

在网络上,并在我的代码和一些研究这是很多内存泄漏。我改变了一些东西来摆脱那个错误。

  1. 我确信,我的背景没有被缓存在任何我的助手类(基本上是我的实用工具类)

  2. 而且我没有使用一个holder类的在我的列表视图

因此,我增加了以下声明,我的自定义适配器类

static class ViewHolder { 
     TextView name; 
     ImageView imageView; 
    } 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder viewHolder = new ViewHolder(); 
    .... 
    convertView.setTag(viewHolder); 
}