我从我的Android应用程序收到常量此崩溃报告.我不明白这是什么错误?这可能是什么原因造成的?
java.lang.RuntimeException: Could not read input channel file descriptors from parcel.
at android.view.InputChannel.nativeReadFromParcel(Native Method)
at android.view.InputChannel.readFromParcel(InputChannel.java:148)
at android.view.InputChannel$1.createFromParcel(InputChannel.java:39)
at android.view.InputChannel$1.createFromParcel(InputChannel.java:36)
at com.android.internal.view.InputBindResult.<init>(InputBindResult.java:62)
at com.android.internal.view.InputBindResult$1.createFromParcel(InputBindResult.java:102)
at com.android.internal.view.InputBindResult$1.createFromParcel(InputBindResult.java:99)
at com.android.internal.view.IInputMethodManager$Stub$Proxy.startInput(IInputMethodManager.java:709)
at android.view.inputmethod.InputMethodManager.startInputInner(InputMethodManager.java:1296)
at android.view.inputmethod.InputMethodManager.checkFocus(InputMethodManager.java:1418)
at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3648)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
Irc*_*ver 10
我有同样的错误.在我清理了所有内存泄漏后,它完全消失了.也消失了java.lang.IllegalStateException: eglMakeCurrent failed EGL_BAD_ALLOC
.Java中的内存泄漏意味着垃圾收集器无法清除对象 - 有一些交叉引用.我知道有一些常见的原因:
一些具有复杂结构的类的未清除对象(例如在父项及其子项上具有交叉引用的树).所以在使用之后你应该调用close
,destroy
或者另一种方法.
Activity类中的Unstatic内部(匿名)类 - 据我所知,内部类总是包含对其父类的引用,因此在完成活动后,内部类的引用仍然存在,GC无法清除它们.如果你在Activity中需要它,总是创建静态类(当你想使用refence来YourActivity
对象时,使用WeakReference <YourActivty>
- 它不会对GC产生影响并且不会出现内存泄漏,但你应该总是检查weakReference.get() != null
).
在Activity类字段中引用内部视图.最好不要使用它们并始终从中获取引用findViewByID
,但是您可以在onDestroy()
方法中将所有这些字段设置为null .
为了搜索一些泄漏,我在Eclipse中使用了Memory Analysis透视图.
PS抱歉我的英文.
归档时间: |
|
查看次数: |
6694 次 |
最近记录: |