android 广播

广播是一种全局的监听器,用于监听全局广播信息。
创建广播发送者:1.创建Intent用于启动Broadcast
                          2.调用sendBroadcast( )或者sendOrderedBroadcast方法指定的广播类
创建广播接收者:1.写一个类继承自BroadcastReceiver
                             2.重与onReceive()方法
                             3.注册广播接收者


有序广播:普通广播不能中断,所有监听这个广播的都能收到信息。有序广播可以中断。


粘性广播:粘性广播要为了解决,在发送广播,在发送广播之后,动态注册的接收者,也能收到广播。


生命周期:广播收者的生命周期是非常短暂的,在接收到广播的时候创建,onReceive()方法结构之后销毁。




开机启动:android.intent.action.BOOT_COMPLETEO


                  权限<uses-permission


                     android :name="android.perminssion.RECEIVE_BOOT_COMPLETED">

有序广播实现

代码如下

广播发送者类

[java]  view plain  copy
  1. package com.zking.administrator.g160628_android21_sender;  
  2.   
  3. import android.content.Intent;  
  4. import android.support.v7.app.AppCompatActivity;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.widget.EditText;  
  8.   
  9. public class MainActivity extends AppCompatActivity {  
  10.   
  11.     private EditText et_main_content;  
  12.   
  13.     @Override  
  14.     protected void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.activity_main);  
  17.         et_main_content = (EditText) findViewById(R.id.et_main_content);  
  18.     }  
  19.     public void send(View view){  
  20.         String content=et_main_content.getText().toString();  
  21.   
  22.         //发送广播  
  23.         //两种类型广播  
  24.         //有序广播  无序广播  
  25.         Intent intent=new Intent();  
  26.         //指定广播的名字  
  27.         intent.setAction("com.zking.administrator.g160628_android21_sender.Hug");  
  28.         //指定广播内容  
  29.         intent.putExtra("content",content);  
  30.         //发送无序广播  
  31.         //sendBroadcast(intent);  
  32.   
  33.         //发送无序黏性广播  
  34.         //sendStickyBroadcast(intent);  
  35.         //发送有序广播  
  36.         sendOrderedBroadcast(intent,null);  
  37.     }  
  38. }  
[java]  view plain  copy
  1. package com.zking.administrator.g160628_android21_receiver02;  
  2.   
  3. import android.content.BroadcastReceiver;  
  4. import android.content.Context;  
  5. import android.content.Intent;  
  6. import android.os.Bundle;  
  7. import android.util.Log;  
  8.   
  9. /** 
  10.  * Created by Administrator on 2017/7/11 0011. 
  11.  */  
  12.   
  13. public class MyReceiver02 extends BroadcastReceiver {  
  14.     @Override  
  15.     public void onReceive(Context context, Intent intent) {  
  16.        //获取广播的名字  
  17.         String action=intent.getAction();  
  18.         if("com.zking.administrator.g160628_android21_sender.Hug".equals(action)){  
  19.             //获取广播内容  
  20.             String content=intent.getStringExtra("content");  
  21.             Log.i("test","广播接受者2号:"+content);  
  22.   
  23.             //判断  
  24.             if(content.contains("免费")){  
  25.                 //不传播  
  26.                 abortBroadcast();  
  27.             }  
  28.   
  29.   
  30.             //改变广播的内容  
  31.             //设置结果  
  32.             Bundle bundle=new Bundle();  
  33.             bundle.putString("newContent",content+",开玩笑的,你阔以免费拥有小灰灰");  
  34.             setResultExtras(bundle);  
  35.         }  
  36.     }  
  37. }  





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值