广播接收者收到的意图是否可以为空?

时间:2013-07-08 20:38:50

标签: android android-intent nullpointerexception broadcastreceiver

换句话说:

@Override
public void onReceive(Context context, Intent intent) {
    final String action = intent.getAction(); // can intent==null here ?
    // could it ever throw a NPE ?
}

我需要一劳永逸地解决这个问题,所以请不要错过。我会检查null,但我怀疑它不需要,因此它是笨拙和不优雅的检查。我在文档中搜索过但没有找到任何内容

编辑:谷歌小组询问 - 请参阅there了解一些有趣的观点

1 个答案:

答案 0 :(得分:8)

onReceive中的{p> BroadcastReceiverIntent触发,其中包含已注册的操作。因此,如果没有Intent是Intent的实例而不是null,则永远不会调用onReceive方法。

话虽如此,奇怪的事情可能会发生。我没有查看Google围绕广播编写的代码,所以虽然它的正确用法它永远不会为空,但检查是个好主意,因为它来自你无法控制的代码。