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中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理.这个广播跟我们传统意义中的电台广播有些相似之处.之所以叫做广播,就 ...
随机推荐
- bzoj 5305: [Haoi2018]苹果树
Description Solution \(n\) 个点的二叉树的方案数是 \(n!\) 证明十分显然:新加入的点占掉了 \(1\) 个位置,新加了 \(2\) 个位置,那么多出来一个位置,所以第 ...
- nopCommerce 3.9 版本发行
NopCommerce中文信息地址:http://www.nopcn.com/nopcommerce39-blog-release-notes.html NopCommerce英文地址:http:// ...
- 跨页面传值之Cookie
3.客户端再次访问某站点 浏览器将携带Cookie信息的指令,将获得的信息参与编译. 4.将含有Cookie信息参与编译的页面发回给浏览器 其中如果有相关的设置Cookie的指令.将再次通过浏览器,写 ...
- mybatis简单示例
1.引入mybatis.jar mysql-connector-java-5.1.47.jar <dependency> <groupId>org.mybatis</gr ...
- 2015-08-19(i++与++i的思考)
今天看到一个很有趣的东西,关于表达式优先级的问题.如下. ; int j=(i++)+(i++); j的值是多少? 分析:编译器是从左往右编译也就是说编译器先做(i++) 1.(i++)由于是++所以 ...
- 编程提取字符串"Java is a programming language"中的各个单词,并打印输出。
import java.lang.String; import java.util.StringTokenizer; public class StringGetWord{ /* 编程提取字符串&qu ...
- bind 事件名称 命名空间
1.通过在事件名称后面添加以点号分隔的后缀来为事件名称指派命名空间 $("#button").bind("click.editMode",function(){ ...
- 分享一个好东西(一天精通MongoDB数据库)
https://pan.baidu.com/s/1o7V5e8U 总共几个小时的视频,看了之后醍醐灌顶.分享出来.
- Mac系统在finder拦显示当前所浏览的文件路径的方法
我们在使用MAC时,Finder栏默认只显示当前浏览的文件夹名称,而没有显示访问路径,这个问题该怎么解决呢? 编辑node的时候需要路径,亲测有效啦~可以试下! 操作步骤: 打开“终端”(应用程序-& ...
- hibernate_ID生成策略
increment:主键按数值顺序递增.此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键.这种方式可能产生的问题是:如果当前有多个实例 ...