2010-08-18 5 views
17

Sono un po 'in perdita, qui. Ho visto un numero sempre crescente di questi NullPointerException s in handleStopActivity. Ho il sospetto che l'aumento di gettoni con l'aumento di 2.2 aggiornamenti ai possessori di Droid, anche se è solo una supposizione. Non ho mai visto l'incidente da solo, e la traccia dello stack fornita dal mercato non menziona nessuna delle classi che ho scritto. Come tale, non ho idea di dove iniziare a risolvere il problema.NullPointerException in handleStopActivity - Nessun riferimento al mio codice nella traccia dello stack

java.lang.NullPointerException 
at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3674) 
at android.app.ActivityThread.access$2600(ActivityThread.java:135) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2153) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:144) 
at android.app.ActivityThread.main(ActivityThread.java:4937) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
at dalvik.system.NativeStart.main(Native Method) 

Dal momento che non conosco la causa, ho anche non so quali informazioni fornire per favorire la diagnosi, così Faccio un overiew: La mia app è WootWatcher. Tiene traccia di Woot.com e avvisa gli utenti di nuovi articoli in vendita. Lo fa per mezzo di un servizio che viene eseguito in un processo separato. Il servizio e l'attività principale comunicano tra loro tramite l'interfaccia di aiuto e il callback. Mi avvalgo anche di gestori di messaggi sia nel servizio che nell'attività, e spesso genera thread per attività costose.

+0

corro droide (ancora 2,2 aggiornamento, in attesa ...) io farò sapere se vedo qualcosa di strano. – Nick

+0

beh ho ricevuto l'aggiornamento 2.2 oggi e ho giocato un po 'con l'app. Non vedo problemi – Nick

+0

stesso problema qui – emmby

risposta

2

Guardando indietro a questo 4 anni vecchia questione, mi rendo conto che dovrei essere in grado di diagnosticare, ma purtroppo non riesco a trovare alcuna versione di AOSP per il quale queste linee corrispondono. Il Droid deve aver utilizzato una versione modificata della sorgente che non è stata resa disponibile.

Detto questo, di Froyo handleStopActivity() non ha molte opportunità per un'eccezione di puntatore nullo. Il più probabile verrebbe indirizzato a Activity.finish() quando l'attività è già stata interrotta o è in fase di arresto.

Ciò accade di solito quando si registrano listener che alla fine chiamano finish() e non si annulla la registrazione di quegli ascoltatori in onPause().

+0

risposta accettata non svalutata perché? – Siddharth

+0

Perché non è possibile l'upvote della propria risposta: P – Sufian

-2

Forse prova a racchiudere il metodo handleStopActivity nel blocco try-catch e gestisci l'errore da solo, fornendo maggiori dettagli e impedendo la chiusura forzata?

+2

Stai suggerendo di modificare il codice OS di Android? – BenTobin

+0

@BenTobin si potrebbe verificare che cosa c'è in ActivityThread.java:3674, può dare suggerimenti a volte. Le segnalazioni di bug sul Play Store menzionano la versione di Android? – Matthieu

1

Che ne dici di segnalare un bug ad Android Project (chiederebbe di verificare se qualcun altro lo ha segnalato)? Se nessun codice di You si trova nello stack trace, ciò significherebbe un bug nel framework. Anche se forse nel tuo altro codice ti interrompi, ad es. un contratto/presupposto non detto.

+0

Si prega di unire le risposte in una risposta. –

+0

Queste risposte rappresentano approcci diversi: perché unirle? – KarolDepka

+0

@KarolDepka è possibile creare rubriche, ma che lo rende una sola risposta è più adatto a StackOverflow. – Sufian

0

Non so, se siete ancora alla ricerca di una soluzione, ma qui è quello che ho scoperto. Se hai trovato una soluzione reale, faccelo sapere.

Ho appena avuto lo stesso problema .. Non ho mai avuto questo problema e senza modificare il codice, è apparso per qualche motivo. Usando google, ho trovato la domanda che Joseph ha postato, ma non sembra essere esattamente la stessa cosa. Ho trovato anche this e this. Questi due sembrano avere lo stesso problema, ma nessuna soluzione .. Poi ho trovato this blog.

L'autrice racconta qualcosa di ciò che viene da - un bug in Android. Inoltre, ha a che fare con un Cursor. Questo non ha risolto il problema, ma ho notato che ho usato un numero Cursor, alcune linee prima di chiamare startActivity(someIntent); (ho anche chiamato finish(), ma rimuovere quella linea non ha fatto la differenza).
Ho provato a rimuovere le linee che includono il Cursor e all'improvviso funziona di nuovo ..
Non ho idea, perché funziona, ma lo fa. Ho appena spostato il codice con lo Cursor nell'altro Activity.

Non è sicuramente una buona soluzione, ma funziona per me.

C'è solo un'altra domanda: usi anche un Cursor e chiami startActivity(..) o qualcosa di simile?

Edit:
ho appena scoperto, che non ha riparato il problema, ho appena fatto non prova sufficiente. Il Activity che ho avviato funzionava bene fino a quando non volevo creare il successivo Activity da quello Activity che avevo avviato in precedenza.All'avvio del prossimo Activity, la mia app si arresta di nuovo.

Problemi correlati