gpt4 book ai didi

java - 安卓错误 : Could not read input channel file descriptors from parcel

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:17:01 25 4
gpt4 key购买 nike

我已经为 Android 开发了一个大致像这样工作的应用程序:

  • 应用程序与 Web 服务通信并传输信息(不是文件)
  • 我可以使用 IntentstartActivity 导航到不同的屏幕

不幸的是,有时应用程序会在不同的 Activity 中崩溃并出现以下错误:

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:135)
at android.view.IWindowSession$Stub$Proxy.add(IWindowSession.java:523)
at android.view.ViewRootImpl.setView(ViewRootImpl.java:481)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:301)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215)
at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140)
at android.view.Window$LocalWindowManager.addView(Window.java:537)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2507)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1986)
at android.app.ActivityThread.access$600(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

但我不知道这个错误是什么意思,因为我不使用文件。任何想法?

最佳答案

这个问题似乎与 Could not read input channel file descriptors from parcel 相同,它被(错误地)关闭为题外话。它也或多或少与 Could not read input channel file descriptors from parcel crash report 相同.不幸的是,这些问题没有得到令人满意的(并且足够笼统)答案,所以我还是要尝试一下。

文件描述符在 Android 中的多个地方使用:

  • 套接字(是的,开放的网络连接也是"file");
  • 实际文件(不一定是磁盘上的文件,也可以是 android.os.MemoryFile 实例);
  • 管道——Linux 在任何地方都使用它们,例如,尝试打开管道会导致您的异常,可能需要在 IME(键盘)进程和您的应用程序之间发送输入事件。

所有描述符均受 shared maximum limit 约束;当超过该计数时,您的应用开始遇到严重问题。在这种情况下让进程死掉是最好的情况,否则内核会耗尽内存(文件描述符存储在内核内存中)。

您可能遇到描述符(文件、网络连接)未关闭的问题。你必须尽快关闭它们。您可能还会遇到内存泄漏问题——对象没有在应该被垃圾收集的时候被垃圾收集(并且一些泄漏的对象可能反过来持有文件描述符)。

你自己的代码不必有罪,你使用的库甚至一些系统组件都可能有bug,导致内存泄漏和文件描述符泄漏。我建议你使用 Square's Leak Canary — 一个简单易用的库,用于自动检测泄漏(好吧,至少是最常见的内存泄漏)。

关于java - 安卓错误 : Could not read input channel file descriptors from parcel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31433987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com