2012-03-06 10 views
28

me ha dado un error al ejecutar pruebas en mi aplicación en la plataforma Android:no podía leer los descriptores de archivos canal de entrada de la parcela

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 conozco pero creo que puede ser un error en la plataforma Android? ¿Qué piensas que puede ser?

+5

Este bloqueo es ambiguo, deberíamos permitir que esto se debata. – Siddharth

+8

Es un error en Android: https://code.google.com/p/android/issues/detail?id=32470 – pixel

+3

Esta pregunta debe estar abierta. – neferpitou

Respuesta

2

Esta excepción puede deberse a que leer datos del proceso del archivo de archivo es diferente ya que el archivo se abrió a través de otro proceso. Si diferentes procesos intentan leer el archivo descriptivo que pertenece a otro proceso, al leer arrojará una excepción.

+0

Gracias por la respuesta. ¿Cómo puede uno asegurarse de que se haga desde el mismo proceso? –

+1

En realidad, no hay una forma segura de asegurarse hasta que esté solo, que haciendo todas las operaciones con el archivo (significa desde la apertura hasta la lectura de datos). Al abrir el archivo por primera vez, debe mantener la identificación del proceso y, en el momento de la lectura, obtener el proceso actual y luego verificarlo. –

4

Esto ocurre a veces cuando abro, salgo y vuelvo a abrir una aplicación. El problema que tengo es que me olvidé de ejecutar la limpieza en el SoundManager:

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

Debe tener algo aún en marcha en la memoria que ahora se ha ejecutado dos veces.

Cuestiones relacionadas