背景
Android中的广播有两种注册方式:
1,程序中动态注册;
2,清单文件中静态注册;
#区别:作用域不同,动态注册的接收者只能在进程内通讯,而静态注册范围更广,可以跨进程通讯。
广播发送器
Button send = (Button) findViewById(R.id.send);//初始化控件
send.setOnClickListener(new View.OnClickListener() {//监听
@Override
public void onClick(View v) {
//通过Itent携带信息
Intent intent = new Intent();
intent.putExtra("flag","高级配置");
//设置广播的action,只有和这个action一样的接受者才能接受才能接收广播
intent.setAction("flag");
//发送广播
sendBroadcast(intent);
Log.d("send", "高级配置");
}
});
广播接收者
在背景中可知,要想实现跨进程通讯需要静态注册广播
代码如下:
manifest文件中:
<receiver android:name=".MyBroadCastReceiver">
<intent-filter>
<action android:name="flag"></action>
</intent-filter>
</receiver>
知识点:静态注册广播需要单独写成类,不能写成内部类
/**
* Created by xuchen on 2017/4/17 9:22.
* Email:chenxu4@iflytek.com
*
* 清单文件中静态注册:需要单独写成类
*/
public class MyBroadCastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String message = intent.getStringExtra("flag");
Log.d("message","message="+message );
}
}
日志切图
知识点:
1,静态注册广播需要单独写成类,不能写成内部类;
2,先开启广播接受者进程再开启发送进程;
3,广播接收者开启一次就行