2012-03-06 3 views
28

ho ottenuto un errore durante l'esecuzione prove in mio app in piattaforma Android:Impossibile leggere i descrittori di file canale di ingresso da pacco

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) 

I don `t conosco, ma penso che possa essere un errore nella piattaforma Android? Cosa pensi che possa essere?

+5

Questo crash è ambiguo, dovremmo permettere che questo venga discusso. – Siddharth

+8

È un bug in Android: https://code.google.com/p/android/issues/detail?id=32470 – pixel

+3

Questa domanda dovrebbe essere aperta. – neferpitou

risposta

2

Questa eccezione potrebbe derivare da, poiché la lettura dei dati dal processo filediscriptor è diversa in quanto quel file era aperto tramite un altro processo. Se processi diversi provano a leggere il filediscriptor che appartiene a un altro processo, durante la lettura genererà un'eccezione.

+0

Grazie per la risposta. Come si può essere sicuri che sia fatto dallo stesso processo? –

+1

In realtà non esiste un modo certo per assicurarsi che finché non lo sei, chi lo fa tutte le operazioni con file (significa dall'apertura alla lettura dei dati). Durante l'apertura del file per la prima volta, è necessario mantenere l'ID del processo e al momento della lettura, ottenere il processo corrente in esecuzione, quindi verificarlo. –

4

Ciò si verifica a volte quando apro, esco e riapro un'applicazione. Il problema che ho è che ho dimenticato di eseguire la pulitura sul SoundManager:

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

È necessario disporre di qualcosa di ancora in esecuzione in memoria che ora è stato eseguito due volte.

Problemi correlati