TaskStackBuilder#startActivities()NullPointerException异常 [英] TaskStackBuilder#startActivities() NullPointerException

查看:1179
本文介绍了TaskStackBuilder#startActivities()NullPointerException异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个不断4.4.2和4.4.3设备发生的(虽然我不知道这是一个API问题)崩溃,其中在一些 ParsePushBroadcastReceiver 以下code使一个 NullPointerException异常某处深 startActivities 调用中。

 意向意图=新的意图(背景下,SomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
TaskStackBuilder.create(上下文)
            .addParentStack(SomeActivity.class)
            .addNextIntent(意向)
            .startActivities();
 

我试图测试,看看上下文是否为空,然而,意向实例会一直抓住这一点。它也可能是值得注意的是,这个应用程序是使用解析按。 崩溃日志本次大跌:

 了java.lang.RuntimeException:无法启动接收器com.example.app.android.receiver.PushReceiver:显示java.lang.NullPointerException
       在android.app.ActivityThread.handleReceiver(ActivityThread.java:2567)
       在android.app.ActivityThread.access $ 1800(ActivityThread.java:161)
       在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1341)
       在android.os.Handler.dispatchMessage(Handler.java:102)
       在android.os.Looper.loop(Looper.java:157)
       在android.app.ActivityThread.main(ActivityThread.java:5356)
       在java.lang.reflect.Method.invokeNative(Method.java)
       在java.lang.reflect.Method.invoke(Method.java:515)
       在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1265)
       在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
       在dalvik.system.NativeStart.main(NativeStart.java)
显示java.lang.NullPointerException:产生的原因
       在android.os.Parcel.readException(Parcel.java:1471)
       在android.os.Parcel.readException(Parcel.java:1419)
       在android.app.ActivityManagerProxy.startActivities(ActivityManagerNative.java:4494)
       在android.app.Instrumentation.execStartActivitiesAsUser(Instrumentation.java:1496)
       在android.app.Instrumentation.execStartActivities(Instrumentation.java:1458)
       在android.app.ContextImpl.startActivities(ContextImpl.java:1465)
       在android.content.ContextWrapper.startActivities(ContextWrapper.java:350)
       在android.content.ContextWrapper.startActivities(ContextWrapper.java:350)
       在android.support.v4.content.ContextCompatJellybean.startActivities(ContextCompatJellybean.java:26)
       在android.support.v4.content.ContextCompat.startActivities(ContextCompat.java:105)
       在android.support.v4.app.TaskStackBuilder.startActivities(TaskStackBuilder.java:325)
       在android.support.v4.app.TaskStackBuilder.startActivities(TaskStackBuilder.java:301)
       在com.example.app.android.receiver.PushReceiver.routePush(PushReceiver.java:59)
       在com.example.app.android.receiver.PushReceiver.onPushOpen(PushReceiver.java:35)
       在com.parse.ParsePushBroadcastReceiver.onReceive(ParsePushBroadcastReceiver.java:108)
       在android.app.ActivityThread.handleReceiver(ActivityThread.java:2552)
       在android.app.ActivityThread.access $ 1800(ActivityThread.java:161)
       在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1341)
       在android.os.Handler.dispatchMessage(Handler.java:102)
       在android.os.Looper.loop(Looper.java:157)
       在android.app.ActivityThread.main(ActivityThread.java:5356)
       在java.lang.reflect.Method.invokeNative(Method.java)
       在java.lang.reflect.Method.invoke(Method.java:515)
       在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1265)
       在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
       在dalvik.system.NativeStart.main(NativeStart.java)
 

解决方案

我是不是能解决这个问题,因为我有一个怀疑,这可能是针对4.4的bug。*设备。作为替代方案,我代替我使用 TaskStackBuilder 的通过 PendingIntent.getActivities 创建我的活动。就我而言,这提供了同样的功能,这是一个简单的更换。也许你会发现它有用。

 最终意图parentIntent =新的意图(背景下,ParentActivity.class);
parentIntent.putExtra(ParentActivity.EXTRA,的ExtraValue);

最终意图childIntent =新的意图(背景下,ChildActivity.class);
childIntent.putExtra(ChildActivity.EXTRA,extraChildValue);
childIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

最终意图[]意图=新的意图[] {parentIntent,childIntent};
PendingIntent pendingIntent = PendingIntent.getActivities(背景下,INTENT_REQUEST_ code,意向,PendingIntent.FLAG_ONE_SHOT);

pendingIntent.send();
 

I have a crash that keeps occurring on 4.4.2 and 4.4.3 devices (although I'm not sure this is an API issue), where in some ParsePushBroadcastReceiver the following code causes a NullPointerException somewhere deep inside the startActivities call.

Intent intent = new Intent(context, SomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
TaskStackBuilder.create(context)
            .addParentStack(SomeActivity.class)
            .addNextIntent(intent)
            .startActivities();

I have tried testing to see whether the context was null, however, the Intent instantiation would've caught that. It might also be worth noting that this application is using Parse Push. The crash log for this crash:

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)

解决方案

I wasn't able to solve this problem as I have a suspicion that this might be a bug specific to 4.4.* devices. As an alternative, I replaced my use of the TaskStackBuilder with creating my activities via PendingIntent.getActivities. In my case, this provided equivalent functionality and it was a straightforward replacement. Perhaps you might find it useful as well.

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();

这篇关于TaskStackBuilder#startActivities()NullPointerException异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆