Domanda

ho scritto un servizio remoto che i clienti possono accedere con i consueti meccanismi di IPC forniti da Android e il legame sembra funzionare. Il problema sorge quando vado a chiamare un metodo in cui devo passare un oggetto come parametro perché ricevo questa eccezione "curioso":

10-19 15:09:04.601: ERROR/AndroidRuntime(2985): FATAL EXCEPTION: main  
10-19 15:09:04.601: ERROR/AndroidRuntime(2985): java.lang.NullPointerException  
10-19 15:09:04.601: ERROR/AndroidRuntime(2985): at android.os.Parcel.readException(Parcel.java:1253)   
10-19 15:09:04.601: ERROR/AndroidRuntime(2985):at android.os.Parcel.readException(Parcel.java:1235)  
10-19 15:09:04.601: ERROR/AndroidRuntime(2985): at it.domod.commons.interfaces.DeviceManager$Stub$Proxy.sendCommand(DeviceManager.java:121)

Sembra essere gettato dalla classe proxy generato dal file .aidl.

La cosa più strana è che l'oggetto sembra essere passato in modo corretto, ma probabilmente c'è qualcosa di sbagliato in tutto. Qualche idea?

È stato utile?

Soluzione

mi è stato incontrando questo problema come bene e dopo un po 'di rovistando trovato il problema. Ho intenzione di pubblicare la mia soluzione in caso aiuta altri hanno trovato alla deriva nella stessa barca.

In primo luogo il debug il thread remoto non funziona in Eclipse a meno che non attivare il debug sul servizio remoto. Per fare questo avevo bisogno per eseguire l'applicazione e mettere un punto di interruzione nella mia prima attività che appena si lega il servizio, una volta che il servizio è attivo e funzionante apro la finestra DDMS in Eclipse e selezionare il filo telecomando e premere il pulsante di debug. Ora è possibile tornare indietro alla finestra Java e aggiungere i punti di interruzione nel servizio remoto e li hanno attivati.

Da lì ho trovato il mio problema era in realtà stavo cercando di operare su un oggetto puntatore nullo nella mia funzione stub nel processo remoto che a sua volta iniettato un'eccezione pacco per NullPointerException nel risultato tornava e si presenta come ciò che questo originale domanda sta chiedendo circa.

La mia soluzione era semplicemente quello di testare l'oggetto non era nulla prima di utilizzarlo:)

vale a dire. Ho aggiunto la dichiarazione 'se' come ci si aspetterebbe per l'attuazione della funzione di stub ...

if( myobject != null )
{
   myobject.dosomething() 
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top