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)

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

 

时间: 2024-10-13 23:27:56

android(eclipse)广播机制知识梳理(三)的相关文章

【原创】源码角度分析Android的消息机制系列(三)——ThreadLocal的工作原理

ι 版权声明:本文为博主原创文章,未经博主允许不得转载. 先看Android源码(API24)中对ThreadLocal的定义: public class ThreadLocal<T> 即ThreadLoca是一个泛型类,再看对该类的注释: /** * This class provides thread-local variables. These variables differ from * their normal counterparts in that each thread th

shell脚本基础知识梳理&lt;三&gt;:条件测试与比较、流程控制 if

一.条件测试与比较1.test 测试表达式 常用test -f file && echo true||echo false2.[ 测试表达式 ] 特别常用[ -f file ]&& echo true||echo false3.[[ 测试表达式 ]]二.流程控制 1.流控制语句 if实例1#!/bin/bash#获取uid=0(root)中的0:id=id | awk -F '[=(]' '{print $2}'echo "your user id is:$id&

九、Android学习第八天——广播机制与WIFI网络操作(转)

(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 九.Android学习第八天——广播机制与WIFI网络操作 今天熟悉了Android中的广播机制与WIFI网络的一些基本操作,总结如下: Android的广播机制 我们知道广播机制中,发送方不会关心接收方时候接收到数据或者如何去处理数据. 这里总结下Android中BroadcastReceiver的注册方法: (一)在应用程序中进行注册 (二)在Manifest.xml

Android之广播(1)

(以下内容是阅读郭霖大神的<第一行代码>后自己总结的) 1.概述 广播是Android的四大组件之一. Android的广播机制十分灵活. 2.发送广播 如上图Android的广播主要分为两类:标准广播和有序广播. 所有的广播接收器都可以接收到标准广播,而且他们的接收几乎是在同一时刻.这意味着标准广播的效率很高,但无法被截断. 在接收有序广播时,广播接收器是由先后顺序的,优先级高的接收器先接收到广播,并且有权对该广播截断,不让后续接收器接收到. 发送标准广播和有序广播的方式非常简单. //发送

第五章 全局大喇叭,详解广播机制

我们晓得的是网络通信中一个IP地址段最大的IP地址为广播地址.例如,某个网路的IP地址为192.168.0.XXX,他的子网掩码为255.255.255.0,那么这个网络的IP地址为192.168.0.255. Android也有相应的广播机制,本章将详细介绍相关细节. 1.广播机制简介 Android的广播机制由广播.广播接收器(Broadcast Receiver)和广播发送的内容组成: 每个应用程序都可以对自己感兴趣的广播进行注册,这意味着该程序只会接受自己"感兴趣"的广播内容:

Android进阶-消息机制

Handler的主要作用是将一个任务切换到某个指定的线程去执行. Android的消息机制主要涉及三个类:Handler, Looper, MessageQueue: 现在假设一个情景: 有两个线程,线程1和线程2,在线程1中调用Looper.prepare(), 创建一个Handler对象handler,调用Looper.loop(). 在线程2中调用handler.sendMessage()发送消息,那最终这个消息会在线程1中被handler.handleMassage()处理.我们画出内存

详解广播机制,Broadcast Receiver,Android进阶必备知识(三)。(附使用广播实现一键强制下线功能)

在前面两节我们发送和接受的都属于系统级别的广播,但是你又没有想过,万一你的应用中的某个广播被别人知道了,人家恶意给你发送各种垃圾广播怎么办?安全性在哪?所以Android为了解决这个问题引入了一套本地广播机制.使用这个机制的广播只能在本应用程序内传播,且接收器也只能接受来自本应用的广播,这样的话刚才说的那个安全问题就已经不算是问题了吧. 下面给一个关于本地广播的一个例子: public class MainActivity extends AppCompatActivity { private

Android学习之基础知识八—Android广播机制

一.广播机制简介 Android提供了一套完整的API,允许应用程序自由的发送和接受广播,发送广播借助于我们之前学过的:Intent,而接收广播需要借助于广播接收器(Broadcast Receiver) 广播的类型主要分为两种:标准广播和有序广播. 标准广播:一种完全异步执行的广播,在广播发出之后,所有接收器几乎在同一时刻接收到这条广播消息,因此它们之间没有任何的先后顺序可言,这种广播的效率会比较高,但是同时也意味着它无法被截断的.标准广播的工作流程图如图所示: 有序广播:一种同步执行的广播,

详解广播机制,Broadcast Receiver,Android进阶必备知识(一)。

直奔主题,关于广播的一些定义什么的我觉得只要是一名合格的初级android开发这都知道吧,我下面要做的就是怎么去使用broadcast receiver. 1.怎么去监听系统广播? Android系统有很多内置的系统广播:电话,短信,时间,地区,电池电量,网络变化等等...那么我们怎么去在我们的应用中实现监听呢?下面我们以监听手机网络发生改变的广播进行监听,都知道广播有两种注册方式,在这里我使用的代码注册的方式,为的是能更好的去理解广播运行机制.在代码中注册一定要注意在你使用完毕的时候一定要反注