广播接收者
BroadcastReceiver
作用:同一app之间多个组件之间传递数据,不同app之间传递数据
注册方法:
静态注册:清单文件中(本app中的类都可获去到值)
动态注册:Activity或其他组件,只能注册者收到值
用法:
发送方: Intention intent =new Intent(“清单文件中注册的action”)
intent。putStringExtra(”kye‘,“value’)
sendBrodcast(intent0);
接收方:
自定义类继承 BroadcastReceiver
重写 receiver方法 (Intent intent){
判断action是否和注册中的action相同
intent。getString(”key“)
}
接收方可以自定义为内部类,也可也定义为外部类(可以跨app)
静态注册:
// An highlighted block
<receiver android:name=".MyBroad">
<intent-filter>
<action android:name="com.mybroadcast"/>
</intent-filter>
</receiver>
//发送方
// An highlighted block
Intent intent=new Intent("com.mybroadcast");
intent.putExtra("str","你好");
sendBroadcast(intent);
//接收方
// An highlighted block
public class MyBroad extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("com.mybroadcast")){
String ssss = intent.getStringExtra("ssss");
Log.e("#####str",ssss);
}
}
//动态注册:
绑定:调用registerReceiver()方法
解绑:unregisterReceiver()方法
// An highlighted block
public class MainActivity extends AppCompatActivity {
private MyReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
receiver=new MyReceiver();
regeister();//注册广播
}
private void regeister() {
//TODO 1:创建过滤器
IntentFilter intentFilter=new IntentFilter();
//TODO 2:调频:
intentFilter.addAction("android.bawei.action.customer");
//TODO 3:注册: 给这个Activity注册
registerReceiver(receiver,intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);//解除注册
}
}