一:全局广播
发送的广播事件可被其他应用程序获取,也能响应其他应用程序发送的广播事件(可以通过 exported–是否监听其他应用程序发送的广播 在清单文件中控制) 全局广播既可以动态注册,也可以静态注册。
默认发送的广播,就是全局广播,所有的App都可以请求接受
二:本地广播
发送的广播事件不被其他应用程序获取,也不能响应其他应用程序发送的广播事件。
本地广播只能被动态注册,不能静态注册。动态注册或方法时需要用到LocalBroadcastManager。
本地广播案例
1,注册一个广播
public class MyReceiver extends BroadcastReceiver {
private static final String TAG = "MyReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "onReceive: ");
}
}
java代码
public class MainActivity extends AppCompatActivity {
private LocalBroadcastManager instance;
private MyReceiver myReceiver;
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.et_id);
instance = LocalBroadcastManager.getInstance(this);
myReceiver = new MyReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.jia");
instance.registerReceiver(myReceiver,intentFilter);
}
public void send(View view) {
String message = editText.getText().toString();
Intent intent = new Intent();
intent.setAction("com.jia");
intent.putExtra("message",message);
instance.sendBroadcast(intent);
}
@Override
protected void onDestroy() {
super.onDestroy();
instance.unregisterReceiver(myReceiver);
}
}
本地广播的优点:
可以明确的知道正在发送的广播不会离开我们的程序,不用担心机密数据泄露
其他程序无法将广播发送到我们的程序内部,不需要担心安全问题
发送本地广播比系统全局的广播效率高