【笔记】Android广播Receiver

前言

Android广播Receiver学习笔记

广播的分类

  • 系统广播
  • 用户自定义广播

静态注册接收广播

创建一个接收者类

app/src/main/java/.../MyReceiver.java
1
2
3
4
5
6
7
8
9
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

// 这里写当接收到广播时要执行的代码
...

}
}

在清单文件中注册

<action android:name="" />:定义一个标记,标记内容自定义

app/src/main/AndroidManifest.xml
1
2
3
4
5
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="receiver1" />
</intent-filter>
</receiver>

发送广播

  • 在MainActivity发送广播给接收者

intent.setAction(""):这里设置的标记需要与上面定义的标记相同

app/src/main/java/.../MainActivity.java
1
2
3
Intent intent = new Intent();
intent.setAction("receiver1");
sendBroadcast(intent);

动态注册接收广播

  • 动态注册不需要在清单文件中注册

创建一个接收者类

app/src/main/java/.../MyReceiver.java
1
2
3
4
5
6
7
8
9
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

// 这里写当接收到广播时要执行的代码
...

}
}

通过Java代码来注册接收者类

filter.addAction("");:定义一个标记,标记内容自定义

app/src/main/java/.../MainActivity.java
1
2
3
4
5
6
MyReceiver myReceiver = new MyReceiver();
// 定义过滤器
IntentFilter filter = new IntentFilter();
filter.addAction("receiver1");
// 把过滤器和接收者对象都传递给注册方法
registerReceiver(myReceiver, filter);

发送广播

  • 在MainActivity发送广播给接收者

intent.setAction(""):这里设置的标记需要与上面定义的标记相同

app/src/main/java/.../MainActivity.java
1
2
3
Intent intent = new Intent();
intent.setAction("receiver1");
sendBroadcast(intent);

完成

参考文献

哔哩哔哩——Android架构解析