1.系统底层和应用软件都可以发送广播,通过intent-filter配置的action拦截广播并处理;
2.有两种接受广播的方式:
1)通过配置xml文件(主要方式,一般底层的系统应用和应用软件都是通过此方式接受广播)
例如:
<receiver
android:name="com.jky.broadcastreceiver.receiver.MyBroadcastReceiver">
<intent-filter>
<action android:name="com.jcy" />
</intent-filter>
</receiver>
2)通过java文件配置
IntentFilter intentFilter = new IntentFilter();
intentFilter.setAction("com,jcy");
registerReceiver(intentFilter);
以上两种方式的效果是一致的,当接收到action为com.jcy的广播时就交给MyBroadcastReceiver的onCreate()方法处理,我们需要重写onCreate()方法
3.放送广播:
Intent intent = new Intent();
intent.setAction("com.jcy");
sendBroadcast(intent);
4广播的类型:
普通广播:广播发出的时候,所有的接收者同时收到。无优先级之分。
有序广播:有顺序,可以被中断,优先级别在-1000~1000,其实可以写到int最大值:2147483647
设置优先级同样有两种方式:
1)xml中设置:
<receiver
android:name="com.jky.broadcastreceiver.receiver.SMSBroadcastReceiver"
>
<intent-filter
android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED"></action>
</intent-filter>
</receiver>
filter.setPriority(1000);
5)因为广播没有任务栈,如果需要启动一个activity需要设置
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
但是如果发送任务或者其他的广播则不需要