1:分类:
   标准广播:没有先后顺序,无法被截断
   有序广播:又先后顺序,可以截断

2:接收广播:首先进行注册,注册的方式有静态注册和动态注册。也就是在代码中注册和在AndroidManifest中注册,并且一旦涉及到系统方面的关键性信息无论静态还是动态都要在manifest中声明权限:

  <users-permission andorid:name="android.permission.ACCESS_NETWORK_STATE"/>查询网络状态

<users-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>接受系统广播

<uers-permisson android:Name="android.permisson.SYSTEM_ALERT_WINDOW"/>弹出系统级别的对话框

  

<user-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver android:name=".BootCmpleteReceiver">
<intent-filter>
<action android:name="android:intent.action.BOOT_COMPLETED"/>
</intent-filter>
</recerver>

发送标准广播

public calss MyBroadcastReceiver extends BroadcastReceiver{
@override
public void onReceive(Context context,Intent intent){
Toast.makeText(context,"*****",Toast.LENGTH_SHORT).show();
}}
<manifest xmlns:andorid=........>
<application.....>
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action andrid:name="com.example.broadcasttest.MYBROADCAST"/>
</receiver>
</application>
</manifest>
MainActivity:
Button button=(Button)findViewById(R.id。send);
burron.setOnClickListener(new OnClickListener(){
@override
public void onClick(View v){
Intent inten =new Intent("加入注册时约好的信号");
sendBroadcast(intent);//sendOrderBroadcast(intent,null)发送有序广播
}});

发送有序广播:
    需要在声明文件中加入<intent-filter android:priority="**">优先级表示语句

如果不希望继续传播那就在广播事件中加入 :abortBroadcast();

3:本地广播的使用

  

public class MainActivity extens Activity{
private IntentFilter intentFilter;
private LocalBroadcastManager LocalBroadcastManager;
private LocalReceiver localReceiver;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout...);
Button button=(Button) findViewById(R.id.send);
localBroadcastManager= LocalBroadcastManager.gerInstance(this);//获取实例
button.setOnClickLister(new OnClickListener(){
@override
public void onClick(View v){
Intent intent=new Intent(""com.example.broadcast.MYBROADCAST);
localBroadcastManager. sendBroadcast(intent);
}
});
intentFilter=new IntentFilter();
localReceiver=new LocalReceiver();
intentFilter.addAction("com.example.broadcast.MYBROADCAST");
localBroadcastManager.registerReceiver(localReceiver,intentFilter);
}
@Override
protected void onDestroy(){
super.onDestroy();
localBroadcastManager.unregisterReceiver(localReceiver);
}
@Override
class LocalReceiver(){
public void onReceive(){
......
}
}

本地广播为了安全性无法通过静态注册,一般静态注册实在实现开机启动的时候才会使用就是说程序还没打开就会先收到广播。

注意:在广播接收器里面启动活动的话一定要使用intent.addFlags(Intenten.FLAG_ACTIVITY_TASK)

还有如果只是调用类的静态方法的话 那么不用实例化也可以的,静态方法不是属于累对象的,是属于类的。

 

最新文章

  1. Oracle 建立索引及SQL优化
  2. linux编程中printf显示不加换行的缓冲问题
  3. 25Spring_事务管理的两种机制
  4. HDU 4870 Rating(高斯消元 )
  5. oc-12-NSString 类简单介绍及用法
  6. 全面分析 Spring 的编程式事务管理及声明式事务管理--转
  7. (转)检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(转)
  8. hdu 4277 USACO ORZ (暴力+set容器判重)
  9. NYoj-街区最短路径问题
  10. docker下编译mangoszero WOW60级服务端(一)
  11. 2n皇后问题
  12. android 如何画心
  13. 权限系统设计-day02
  14. thymeleaf 简易使用范例
  15. Laravel - 1
  16. NOIp2017D2T1(luogu3968) 奶酪 (并查集)
  17. 安装java时,配置环境变量classpath的作用
  18. transition和animation区别
  19. Windows下安装mayavi2
  20. 51nod1040最大公约数之和(欧拉函数)

热门文章

  1. 浅谈前端与SEO
  2. C#IO流文件操作
  3. 调用WCF错误-There was no endpoint listening
  4. 03.if 和 switch结合练习
  5. javascript:中文等字符转成unicode
  6. Android滑动删除功能
  7. javascript实现数据结构: 稀疏矩阵之三元组线性表表示
  8. Hyperledger Fabric SDK use case 1
  9. Eclipse equinox implementation of OSGi
  10. App后台开发架构实践笔记