BroadcastReceiver
BroadcastReceiver,广播接收者,用来接收系统和应用的广播,并做出相应的处理,如电量过低时提示用户充电等;
BroadcastReceiver 是 Android 的四大组件之一,分为 普通广播
、有序广播
、粘性广播
;
BroadcastReceiver 的使用步骤:
自定义一个类,继承自 BroadcastReceiver,并重写 onReceive() 方法,在该方法中对接收到的广播进行相应的处理;
注册广播地址:分为静态注册 (在 AndroidManifest.xml 中注册) 和动态注册 (在代码中注册)
发送广播:普通广播 sendBroadcast()
、有序广播 sendOrderedBroadcast()
、粘性广播 sendStickyBroadcast()
自定义广播
普通广播 (Normal Broadcast)
普通广播对于接收者来说是异步的,每个接收者都可以接收到广播,接收者不会相互干扰,也因此,接收者无法终止广播。
1. activity_main:
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
tools:context=".MainActivity">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="发送自定义广播"
android:onClick="sendBroadcast"/>
2. MainActivity.java:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void sendBroadcast(View view) {
// 1. 创建一个 Intent 对象;
Intent intent = new Intent();
// 2. 设置 Action;
intent.setAction("net.monkeychan.ACTION_SEND");
// 3. 发送普通广播
sendBroadcast(intent);
}
}
3. MyBroadcastReceiver.java:
// 自定义一个类,继承 BroadcastReceiver 类,并重写 onReceive() 方法
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("MyBroadcastReceiver", "收到了自定义广播");
}
}
4. 在 AndroidManifest.xml 中注册 (静态注册)
MyBroadcastReceiver:
package="net.monkeychan.broadcastreceivertest01">
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
5. 效果演示:
点击按钮,发送广播:
多次点击,每点击一次就发送一次广播&