2010-10-19 16 views
10

Napisałem usługę zdalną, za pomocą której klienci mogą logować się przy użyciu zwykłych mechanizmów IPC udostępnianych przez Androida, a powiązanie wydaje się działać. Problem pojawia się, gdy idę do wywołania metody, w której muszę przekazać obiekt jako parametr, ponieważ mam ten „dziwny” wyjątek:Parcel.readException przekazując obiekt do usługi zdalnej

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) 

wydaje się być wyrzucony z klasy proxy generowanej z. plik pomocniczy.

Czym dziwniejsze jest to, że obiekt wydaje się poprawnie przekazany, ale prawdopodobnie coś jest nie tak. Dowolny pomysł?

+0

Czy byłeś w stanie to rozwiązać? Mam nieco podobny problem. – folone

+3

Czy umieścisz plik pomocy i kod dla działki? –

+0

podobny do tego: http://www.anddev.it/index.php?topic=1175.0 –

Odpowiedz

11

Zdaję sobie również sprawę z tym problemem i po odrobinie grzebania w pobliżu znalazłem problem. Zamierzam opublikować moje rozwiązanie na wypadek, gdyby pomogło innym znaleźć dryfowanie w tej samej łodzi.

Najpierw debugowanie zdalnego wątku nie działa w środowisku Eclipse, chyba że włączysz debugowanie w usłudze zdalnej. Aby to zrobić, musiałem uruchomić aplikację i umieścić punkt przerwania w mojej pierwszej aktywności, która po prostu wiąże usługę, gdy usługa jest już uruchomiona Otwieram okno DDMS w czasie zaćmienia i wybieram zdalny wątek i wciskam przycisk debugowania. Teraz możesz przejść z powrotem do okna Java i dodać punkty przerwania do usługi zdalnej i je uruchomić.

Stamtąd odkryłem, że mój problem polegał na tym, że próbowałem operować na obiekcie wskaźnika pustego w mojej funkcji pośredniczącej w procesie zdalnym, który z kolei wstrzyknął wyjątek paczki dla punktu zerowego w wyniku, który powrócił i wygląda tak, jak to oryginalne pytanie pyta.

Moje rozwiązanie było po prostu przetestować obiekt nie był zerowy przed użyciem :)

czyli dodałem „czy” oświadczenie jak można się spodziewać w realizacji funkcji skrótowej ...

if(myobject != null) 
{ 
    myobject.dosomething() 
} 
+0

Właśnie wstawiłem wywołanie w bloku try/catch, aby uniknąć modyfikacji kodu wygenerowanego automatycznie :) – rciovati

Powiązane problemy