背景
句柄泄漏(Fd leak)不是什么新鲜问题了,网上一搜这种问题,有很多种解决办法。 但没有系统性,导致排查问题效率极低。笔者希望通过这一篇文章,帮助大家理清思路,快速解决问题。
排查问题的黄金步骤
- 查log
- 找复现步骤
- 查代码
本文也将按照这几步,逐步深入到问题中。
查log
一般发生这种问题时,堆栈如下:
java.lang.RuntimeException
Could not read input channel file descriptors from parcel.
android.view.InputChannel.nativeReadFromParcel(Native Method)
android.view.InputChannel.readFromParcel(InputChannel.java:148)
android.view.IWindowSession$Stub$Proxy.addToDisplay(IWindowSession.java:804)
android.view.ViewRootImpl.setView(ViewRootImpl.java:770)
android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:356)
android.view.WindowManagerImpl.addVi