9

Ich habe einen Absturz, der auf 4.4.2 und 4.4.3 Geräten auftritt (obwohl ich nicht sicher bin, dass dies ein API-Problem ist), wo in einigen ParsePushBroadcastReceiver der folgende Code irgendwo einen NullPointerException verursacht tief in den startActivities Anruf.TaskStackBuilder # startActivities() NullPointerException

Ich habe versucht zu testen, ob der Kontext null war, aber die Intent-Instantiierung hätte das erfasst. Es könnte auch erwähnenswert sein, dass diese Anwendung Parse Push verwendet. Das Crash-Protokoll für diesen Absturz:

java.lang.RuntimeException: Unable to start receiver com.example.app.android.receiver.PushReceiver: java.lang.NullPointerException 
     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2567) 
     at android.app.ActivityThread.access$1800(ActivityThread.java:161) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1341) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:157) 
     at android.app.ActivityThread.main(ActivityThread.java:5356) 
     at java.lang.reflect.Method.invokeNative(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 
     at dalvik.system.NativeStart.main(NativeStart.java) 
Caused by: java.lang.NullPointerException 
     at android.os.Parcel.readException(Parcel.java:1471) 
     at android.os.Parcel.readException(Parcel.java:1419) 
     at android.app.ActivityManagerProxy.startActivities(ActivityManagerNative.java:4494) 
     at android.app.Instrumentation.execStartActivitiesAsUser(Instrumentation.java:1496) 
     at android.app.Instrumentation.execStartActivities(Instrumentation.java:1458) 
     at android.app.ContextImpl.startActivities(ContextImpl.java:1465) 
     at android.content.ContextWrapper.startActivities(ContextWrapper.java:350) 
     at android.content.ContextWrapper.startActivities(ContextWrapper.java:350) 
     at android.support.v4.content.ContextCompatJellybean.startActivities(ContextCompatJellybean.java:26) 
     at android.support.v4.content.ContextCompat.startActivities(ContextCompat.java:105) 
     at android.support.v4.app.TaskStackBuilder.startActivities(TaskStackBuilder.java:325) 
     at android.support.v4.app.TaskStackBuilder.startActivities(TaskStackBuilder.java:301) 
     at com.example.app.android.receiver.PushReceiver.routePush(PushReceiver.java:59) 
     at com.example.app.android.receiver.PushReceiver.onPushOpen(PushReceiver.java:35) 
     at com.parse.ParsePushBroadcastReceiver.onReceive(ParsePushBroadcastReceiver.java:108) 
     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2552) 
     at android.app.ActivityThread.access$1800(ActivityThread.java:161) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1341) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:157) 
     at android.app.ActivityThread.main(ActivityThread.java:5356) 
     at java.lang.reflect.Method.invokeNative(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 
     at dalvik.system.NativeStart.main(NativeStart.java) 
+1

Ich renne zu im Grunde die gleiche Sache. Sehen Sie es nur auf 4.4.2 und 4.4.4 –

+0

Irgendwas Glück? Hast du es gelöst? – Arthur

+0

habe ich leider nicht. –

Antwort

11

ich nicht in der Lage war, dieses Problem zu lösen, wie ich den Verdacht habe, dass dies ein Fehler spezifisch für 4.4 sein könnte * Geräte.. Als Alternative ersetzte ich meine Verwendung der TaskStackBuilder durch Erstellen meiner Aktivitäten über PendingIntent.getActivities. In meinem Fall bot dies gleichwertige Funktionalität und es war ein einfacher Ersatz. Vielleicht finden Sie es auch nützlich.

final Intent parentIntent = new Intent(context, ParentActivity.class); 
parentIntent.putExtra(ParentActivity.EXTRA, extraValue); 

final Intent childIntent = new Intent(context, ChildActivity.class); 
childIntent.putExtra(ChildActivity.EXTRA, extraChildValue); 
childIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

final Intent[] intents = new Intent [] {parentIntent, childIntent}; 
PendingIntent pendingIntent = PendingIntent.getActivities(context, INTENT_REQUEST_CODE, intents, PendingIntent.FLAG_ONE_SHOT); 

pendingIntent.send(); 
+0

Awesome umgehen. Werde es im nächsten Update für diese App als Alternative zu API 19 werfen, wird mit Befunden zurückmelden. – alex

+0

Ich habe das jetzt schon ein wenig in Produktion und habe noch keine Probleme mit. Tolles Zeug @daniel – alex