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中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理.这个广播跟我们传统意义中的电台广播有些相似之处.之所以叫做广播,就 ...
随机推荐
- 生成正射影像/DSM,等高线提取
工具:ContextCapture,Globe Mapper 方法/步骤: 1.新建项目,导入影像,提交空三运算 在ContextCapture中新建项目,添加相关影像或视频和其他相关资源,资源,提交 ...
- ajax实现的点击数目加1代码实例
ajax实现的点击数目加1代码实例:在点击按钮实现数字增加效果代码实例一章节中,介绍如何点击按钮实现数字加1的效果,但是好像并没有什么实际用处,下面就分享一段相对完整的能够在实际应用中派上用场的代码, ...
- c#学习基础(2)存储、值类型和引用类型、变量
程序运行时,它的数据必须存储在内存中,数据项需要多大的内存.存储在什么地方以及如何存储都依赖该数据项的类型 运行中的程序使用两个区域来存储数据:栈和堆 栈是一个内存数组,是一个LIFO(last in ...
- C#学习笔记9
1.多播委托:由与delegate关键字声明的委托,在编译后默认继承Delegate与MulticastDelegate类型,所以声明的委托自然就含有多播委托的特性,即一个委托变量可以调用一个方法链( ...
- JS中绑定事件顺序(事件冒泡与事件捕获区别)
在JS中,绑定的事件默认的执行时间是在冒泡阶段执行,而非在捕获阶段(重要),这也是为什么当父类和子类都绑定了某个事件,会先调用子类绑定的事件,后调用父类的事件.直接看下面实例 <!Doctype ...
- mysql三-1:理解存储引擎
一.什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制:比如处理文本用txt类型,处 ...
- scss-@each指令
一.@each指令实例 在@each变量的定义,其中包含的每个项目的列表中的值. 语法: @each $var in <list or map> 语法简要说明如下. $var: 它代表了变 ...
- Java设计模式—门面模式(带案例分析)
1.门面模式的定义: 门面模式(Facade Pattern)也叫做外观模式,是一种比较常用的封装模式,其定义如下: 要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行.门面模式 ...
- SQL注入和XSS攻击的原理
8.4 Web跨站脚本攻击 8.4.1 跨站脚本攻击的原理(1) 跨站脚本在英文中称为Cross-Site Scripting,缩写为CSS.但是,由于层叠样式表 (Cascading Style ...
- JSP初学者3
reponse代表服务器对客户端的响应.大部分时候,程序无须使用response来响应客户端请求,因为有更简单的响应对象——out,它代表页面输出流. 但out无法响应生成非字符内容(out是JspW ...