换句话说:
@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了解一些有趣的观点
答案 0 :(得分:8)
onReceive
中的{p> BroadcastReceiver
由Intent
触发,其中包含已注册的操作。因此,如果没有Intent是Intent
的实例而不是null,则永远不会调用onReceive
方法。
话虽如此,奇怪的事情可能会发生。我没有查看Google围绕广播编写的代码,所以虽然它的正确用法它永远不会为空,但检查是个好主意,因为它来自你无法控制的代码。强>