android(eclipse)广播机制知识梳理(三)
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)
还有如果只是调用类的静态方法的话 那么不用实例化也可以的,静态方法不是属于累对象的,是属于类的。
android(eclipse)广播机制知识梳理(三)的更多相关文章
- Android学习--广播机制
广播机制简介 Android的广播可以分为两种类型的,标准广播和有序的广播: 标准广播: 是一种完全异步执行的广播,在广播发出去之后,所有的广播接收器几乎是同一时接收到这条广播. 有序广播: 是一 ...
- 【原创】源码角度分析Android的消息机制系列(三)——ThreadLocal的工作原理
ι 版权声明:本文为博主原创文章,未经博主允许不得转载. 先看Android源码(API24)中对ThreadLocal的定义: public class ThreadLocal<T> 即 ...
- 九、Android学习第八天——广播机制与WIFI网络操作(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 九.Android学习第八天——广播机制与WIFI网络操作 今天熟悉了An ...
- Android学习笔记(广播机制)
1.Android的广播机制介绍 收听收音机也是一种广播,在收音机中有很多个广播电台,每个广播电台播放的内容都不相同.接受广播时广播(发送方)并不在意我们(接收方)接收到广播时如何处理.好比我们收听交 ...
- Android之 广播
(以下内容是阅读郭霖大神的<第一行代码>后自己总结的) 1.概述 广播是Android的四大组件之一. Android的广播机制十分灵活. 2.发送广播 如上图Android的广播主要分为 ...
- Android学习之基础知识八—Android广播机制
一.广播机制简介 Android提供了一套完整的API,允许应用程序自由的发送和接受广播,发送广播借助于我们之前学过的:Intent,而接收广播需要借助于广播接收器(Broadcast Receive ...
- Android广播机制:Broadcast
转载:Android总结篇系列:Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广 ...
- Android 知识梳理
说明:本篇博客只是一个知识整理,因为网上对于Android的知识介绍足够多,因此我不再写相关文章(主要是因为我写的不如人家好),所以所有文章均来自网络,不贴原文章,只提供连接,因此本文旨在减少你对相关 ...
- Android随笔之——Android广播机制Broadcast详解
在Android中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理.这个广播跟我们传统意义中的电台广播有些相似之处.之所以叫做广播,就 ...
随机推荐
- CSS 专业的技巧
目录 专业的技巧 支持情况 贡献准则 专业的技巧 使用CSS复位 继承 box-sizing 使用 :not() 选择器来决定表单是否显示边框 为 body 元素添加行高 垂直居中任何元素 逗号分 ...
- JS常用的设计模式(6)——桥接模式
桥接模式的作用在于将实现部分和抽象部分分离开来, 以便两者可以独立的变化.在实现api的时候, 桥接模式特别有用.比如最开始的singleton的例子. var singleton = functio ...
- SQL动态配置,动态解析SQL
在项目中使用SQL动态配置的方式可以让后期的维护和发布后的修改变得更加方便,无论使用那种配置方式都离不开解析成最终真正能执行的SQL.下面代码就是一种比较简单的处理方法,SQL的参数以##括起来. 1 ...
- JavaScript各类型变量和对象
一.javascript支持的数据类型: var x=1 数字 var x=0.1 小数 var x=true/false bool var x="abc" 字符串 ...
- stark——查看页面编辑删除按钮
一.数据列表 设计查页面,主要展示两部分内容,表头部分和数据部分, 表头通过遍历list_display和默认要显示的编辑和删除字段. 1.数据构建 (1)service/stark.py,后台数据构 ...
- javascript的对象创建模式---命名空间模式
javascript中对象的概念是很普遍的,对象是是对象,数组是对象,函数也是对象,字符串其实也是对象.常见的对象创建方法有对象字面量.构造函数创建.我们先来看看对象的创建还有哪些更高级的模式. 一. ...
- git本地分支重命名
1. 本地分支重命名 git branch -m oldbranchname newbranchname 2. 远程分支重命名 (假设本地分支和远程对应分支名称相同) a. 重命名远程分支对应的本地分 ...
- JS监测鼠标指针位置
需求1:鼠标移入正方形的时候,蓝色小圆点跟随鼠标滚动(不许蓝色小圆点超出正方形区域),正方形里实时显示当前鼠标相对于body的坐标. <!DOCTYPE html> <html la ...
- sqlalchemy & python & datatables & javascript 中文拼音排序
近期有中文拼单排序需要,查询资料,mysql数据库有convert函数支持 select cname from channel order by convert(cname using gbk); # ...
- Spark天堂之门解密
本课主题 什么是 Spark 的天堂之门 Spark 天堂之门到底在那里 Spark 天堂之门源码鉴赏 引言 Spark 天堂之门就是SparkContext,这篇文章会从 SparkContext ...