2012-03-06 39 views
28

在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: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:803) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:570) 
at dalvik.system.NativeStart.main(Native Method) 

我`吨知道,但我认为它可以在Android平台的一个错误?你认为这可能是什么?

+5

这个崩溃是不明确的,我们应该让这个被讨论。 – Siddharth 2012-10-10 09:22:29

+8

这是Android中的错误:https://code.google.com/p/android/issues/detail?id=32470 – pixel 2013-08-12 09:20:27

+3

应该打开这个问题。 – neferpitou 2015-06-29 12:08:49

回答

2

这个异常可能是因为从filediscriptor读取数据的过程与通过另一个过程打开该文件不同。如果不同的过程尝试读取属于另一个过程的filediscriptor,那么在读取它时将抛出异常。

+0

感谢您的回答。如何确保它从相同的过程完成? – 2014-04-01 15:05:23

+1

其实没有什么确定的方法可以确保你只是在做所有的文件操作(意味着从打开到读取数据)。第一次打开文件时,您需要维护进程ID并在阅读时获取当前正在运行的进程,然后进行交叉检查。 – 2014-09-05 05:37:33

4

当我打开,退出并重新打开应用程序时,有时会发生这种情况。我的问题是,我忘了在SoundManager类运行清理:

public static void cleanup() { 
    mSoundPool.release(); 
    mSoundPool = null; 
    mSoundPoolMap.clear(); 
    mAudioManager.unloadSoundEffects(); 
    _instance = null; 
} 

您必须在内存中的东西仍然在运行,你现在已经两次运行。