接手的项目有一类较多的异常,读到一篇颇有帮助的文章,简单记录一下
java.lang.RuntimeException
Could not read input channel file descriptors from parcel.
原文地址
Android Memory and File Descriptor Leaks, Diagnosis and Debugging
每一个Android程序默认可以使用1024个 File Descriptor.任何一个IO操作都会使用一个FD,比如socket,open file等等.
一般来说,一个pid打开的FD不会超过100个,使用WebView的也不会超过200个,如果到达了500以上基本都存在泄露问题.Android也直接内置了lsof可以查看进程使用的FD数量
adb shell lsof | grep <your-pid> | wc -l
这个是以前不清楚的,逐一排查后,错误率大幅度下降