通过广播接受器开机启动一个服务 为什么还要在onReceive()方法中判断是不是开机广播?

代码在图片里
if (intent.getAction().equals(action_boot)){
这句代码是不是多余的?画蛇添足图片图片

嗯,可以不加判断,因为你只配置了一个action

是多余的,但是如果清单文件中有多个Action的话,就要判断了,比如:SD卡状态发生变化



public class SDCardReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();

    if (action.equals("android.intent.action.MEDIA_UNMOUNTABLE")) {
        Toast.makeText(context, "SD卡未挂载", Toast.LENGTH_LONG).show();
    }else if (action.equals("android.intent.action.MEDIA_MOUNTED")) {
        Toast.makeText(context, "SD卡正常运行", Toast.LENGTH_LONG).show();
    }else if (action.equals("android.intent.action.MEDIA_REMOVED")) {
        Toast.makeText(context, "SD卡被拔出", Toast.LENGTH_LONG).show();
    }
}

}

这句代码**不是多余**的,因为虽然你的Reciever只注册了一个广播,这并不代表别动广播收不到。可以通过
Intent intent = new Intent("android.btopp.intent.action.Hide");
intent.setClassName(包名,类名)。
mContext.sendBroadcast(intent);
这样也会收到该广播(系统应用Bluetooth就是这样做的)。如果不判断不就有问题了吗。