Android广播接收者

时间:2022-02-02 10:10:18

 其实,在什么是广播的第一句就已经说明了广播有什么用了。对了,笼统一点讲就是用来传输数据的。具体一点说就是:
1. 实现了不同的程序之间的数据传输与共享,因为只要是和发送广播的action相同的接受者都能接受这个广播。
          典型的应用就是android自带的短信,电话等等广播,只要我们实现了他们的action的广播,那么我们就能接收他们的数据了,
          以便做出一些处理。比如说拦截系统短信,拦截骚扰电话等等
2.起到了一个通知的作用,比如在service中要通知主程序,更新主程序的UI等

 

广播的两种 注册的方式 :

              Android提供了两种注册广播接受者的形式,
              分别是在程序中动态注册和在xml中指定。 他们之间的区别就是作用的范围不同,
       程序动态注册的:  接收者只在程序运行过程中有效,
       而在xml注册的:  接收者不管你的程序有没有启动有会起作用

广播发送方分为普通广播和有序广播;
           同步广播:发送方发出后,几乎同时到达多个广播接收者处,
                   某个接收者不能接收到广播后进行一番处理后传给下一个接收者,
                   并且无法终止广播继续传播;Context.sendBroadcast(intent);
   
           有序广播:广播接收者需要提前设置优先级,优先级高的先接收到广播,优先级数值为-1000~1000

 

接收广播 :

 private final String ACTION_NAME = "发送广播";  

// 初始化的方法
public void registerBoradcastReceiver(){ IntentFilter myIntentFilter = new IntentFilter(); myIntentFilter.addAction(ACTION_NAME); //注册广播 registerReceiver(mBroadcastReceiver, myIntentFilter); } private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(action.equals(ACTION_NAME)){ Toast.makeText(Test.this, "处理action名字相对应的广播", 200); } } };


发送广播  :

  

 public void sendBoradcastReceiver(){  
       Intent mIntent = new Intent(ACTION_NAME);  
       mIntent.putExtra("name", "发送广播,相当于在这里传送数据");                    
           //发送广播   
        sendBroadcast(mIntent); 
 }  

停止的方法:

     unregisterReceiver(mBroadcastReceiver);