2012-03-06 74 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; 
} 

您必須在內存中的東西仍然在運行,你現在已經兩次運行。