我有以下IntentService
。
public class NotificationIntentService extends IntentService {
public NotificationIntentService() {
super("NotificationIntentService");
}
@Override
protected void onHandleIntent(@Nullable Intent intent) {
boolean retainStockPriceAlert = intent.getBooleanExtra(RETAIN_STOCK_PRICE_ALERT, true);
...
}
}
我使用以下代码启动IntentService
Intent intent = new Intent(this, NotificationIntentService.class);
intent.putExtra(NotificationIntentService.RETAIN_STOCK_PRICE_ALERT, retainStockPriceAlert);
startService(intent);
然而,令我惊讶的是,有些用户在Intent
期间获得了空onHandleIntent
。因此,NPE发生了。
Intent:传递给startService(Intent)的值。如果,这可能为null 该服务在其流程消失后重新启动;看到 onStartCommand(Intent,int,int)了解详细信息。
我不太明白restarted after its process has gone away
是什么意思。
我可以通过
轻松避免NPE@Override
protected void onHandleIntent(@Nullable Intent intent) {
if (intent == null) {
return;
}
boolean retainStockPriceAlert = intent.getBooleanExtra(RETAIN_STOCK_PRICE_ALERT, true);
...
}
但是,我不确定这是否是正确的事情。
答案 0 :(得分:0)
我可以使用
来避免NPEsetIntentRedelivery(true);
IntentService
构造函数中的
此答案由@Kunu的参考链接提供 - https://stackoverflow.com/a/37973523/72437