【问题标题】:Android IntentService triggered with null intentAndroid IntentService 以空意图触发
【发布时间】:2016-10-23 23:24:45
【问题描述】:

我在 Crashlytics 中看到了崩溃:

致命异常:java.lang.NullPointerException:尝试调用 虚拟方法'int android.content.Intent.getIntExtra(java.lang.String, int)' 为空 对象引用 在 com.myapp.APKOfferQueueManagerIntentService.onHandleIntent(SourceFile:71) 在 android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:135) 在 android.os.HandlerThread.run(HandlerThread.java:61)

IntentService 怎么会被一个空意图触发?

【问题讨论】:

  • 你在服务中调用过onStartCommand吗?
  • 不,我没有添加 onStartCommand。

标签: android android-intent android-service android-intentservice


【解决方案1】:

IntentService 可能像所有其他服务一样被停止,但它会被“系统”重新启动,直到onHandleIntent() 完成其工作。在这种情况下,documentation 表示 intent 参数

...如果服务在其进程消失后重新启动,则可能为 null

要始终获取原始Intent 作为参数,请使用

setIntentRedelivery(true);

IntentService的构造函数中。

还要注意

如果已发送多个 Intent,则保证仅重新发送最近的一个。

【讨论】:

  • 这听起来像是解决方案。有没有一种方法可以模拟一个 intentService 被突然杀死然后再次调用?我想验证解决方案。
  • @JY2k - 我会尝试类似 task killer app 的东西 - 或者这个 SO post by Xavi Gil 可能会有用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多