我需要一些帮助来调试我的android应用程序,并找出为什么我的android应用程序一直崩溃。应用程序崩溃的页面,其中有一个listview和每个listview行有一个图像和一些文本在它。我已经创建了一个缓存类,用于存储listview中图像的所有位图。在该页面(带有列表视图的页面)停留大约一个小时后,应用程序崩溃了,这就是我在Logcat控制台看到的。我不明白这次崩溃是怎么发生的,任何关于其根本原因的提示或建议将非常有帮助。如果信息不充分,我深表歉意。
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>
我还想提一下,我有一个动画列表,它运行并被显示为这个应用程序的背景图像。
导航栏布局
导航栏布局
<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>
和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>
我在网上和我的代码中做了一些研究,发现有很多内存泄漏。我修改了一些东西来消除这个错误。
-
我确保我的上下文没有被缓存在我的任何助手类(基本上是我的实用程序类)
-
我也没有使用持有人类在我的listview
static class ViewHolder {
TextView name;
ImageView imageView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = new ViewHolder();
....
convertView.setTag(viewHolder);
}