精华内容
下载资源
问答
  • 实验要求:通过sendOrderedBroadeast()发送一条有序广播 1.在activity-main.xml布局文件中代码如下: <?xml version=1.0 encoding=utf-8?> <RelativeLayout xmlns:android=http://s
  • 所有注意事项都在代码的注释里面 值得注意广播里面不能做耗时操作

      所有的注意事项都在代码的注释里面 值得注意的是广播里面不能做耗时操作


    package com.imooc.www.moocdemo;
    
    import android.content.*;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.Button;
    
    /**
     * Created by Administrator on 2016/5/13.
     */
    public class BroadCastActivity extends AppCompatActivity implements View.OnClickListener {
        private Button Bc1, Bc2, Bc3;
        private BR2 bc2;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.broadcastactivity);
            Bc1 = (Button) findViewById(R.id.bc1);
            Bc2 = (Button) findViewById(R.id.bc2);
            Bc3 = (Button) findViewById(R.id.bc3);
            Bc1.setOnClickListener(this);
            Bc2.setOnClickListener(this);
            Bc3.setOnClickListener(this);
    //动态注册广播接收器。来接收广播,动态注册的广播优先级要高于在清单文件注册的广播接收器要高。值注意的是在程序结束的时候记得释放资源(在ondestory方法里取消这个注册器)
            IntentFilter intentFilter = new IntentFilter("BC_1");
            bc2 = new BR2();
            registerReceiver(bc2,intentFilter);
    
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.bc1:
                    Intent intent = new Intent();
                    intent.putExtra("msg", "这是一条普通广播");
                    intent.setAction("BC_1");//这里要设置一个唯一标示 要跟清单文件的action里面的标识要保持一致。
                    BroadCastActivity.this.sendBroadcast(intent);
    //              Toast.makeText(BroadCastActivity.this,"点击了",Toast.LENGTH_LONG).show();
                    break;
                case R.id.bc2:
    
                    Intent intent2 = new Intent();
                    intent2.putExtra("msg", "这是一条有序广播");
                    intent2.setAction("BC_1");
                    BroadCastActivity.this.sendOrderedBroadcast(intent2,null);
                    break;
    
                case R.id.bc3:
                    break;
            }
        }
    //动态注册的广播一定要在程序结束 的时候 取消这个接收器
        @Override
        protected void onDestroy() {
            super.onDestroy();
            unregisterReceiver(bc2);
        }
    }
    

    清单文件注册receiver代码如下

    <receiver android:name=".BR1" >
        <intent-filter >
            <action android:name="BC_1"/>
        </intent-filter>
    </receiver>
        </application>

    两个接收器的代码BC1,BC1位静态注册 ,在清单文件里面注册 代码如上所示。

    package com.imooc.www.moocdemo;
    
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.widget.Button;
    
    
    /**
     * Created by Administrator on 2016/5/13.
     */
    public class BR1 extends android.content.BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            String s = intent.getStringExtra("msg");
            System.out.println("recelier1 收到消息:"+s);
    
            Bundle bundle = getResultExtras(true);
            String s2 = bundle.getString("test");
            //这里在打印从BR1传来的数据s2的时候要给s2加上.toString()不知道为什么否则不能收到值 值为null
            System.out.println("通过广播传递的数据为:"+s2.toString());
        }
    }
    

    BC2接收器代码 动态注册

    package com.imooc.www.moocdemo;
    
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    
    
    /**
     * Created by Administrator on 2016/5/13.
     */
    public class BR2 extends android.content.BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
           //BC2为动态注册的广播 优先级要高于静态注册的BC1广播接受者所以BC2会优先
            //收到广播,在发送有序广播的时候在BC2接收到广播之后对广播进行拦截(abortBroadcast();)这样BC1
            //就不会收到广播,值得注意的是普通广播是不能被截获的 否则会发生异常
            String s = intent.getStringExtra("msg");
            System.out.println("recelier2 收到消息:"+s);
            //截获,终止广播的发送
    //        abortBroadcast();
    
    //BC2是动态注册的广播接收器优先级高于BC1的静态注册广播会先收到广播数据那么此时我们
            //可以在BC2收到广播后传递一些数据到BC1的接收器当中 但是这里不要进行耗时操作
            //此处通过Bundle 传递一个字符串数据  在BC1中接收
            Bundle bundle = new Bundle();
            bundle.putString("test","广播处理数据");
            setResultExtras(bundle);
            System.out.println("广播"+bundle.toString());
    
        }
    }
    





    展开全文
  • 发送有序广播

    2017-06-02 10:41:50
    通过sendOrderedBroadcast()方法发送一条有序广播 1.界面交互代码的设计与实现 2.用户交互代码的设计与实现 3.创建3个广播接收者  MyBroadcastReceiverOne.java  MyBroadcastReceiverTwo.java   ...

    通过sendOrderedBroadcast()方法发送一条有序广播

    1.界面交互代码的设计与实现

    2.用户交互代码的设计与实现


    3.创建3个广播接收者

          MyBroadcastReceiverOne.java

          MyBroadcastReceiverTwo.java

          MyBroadcastReceiverThre.java



    4.设置优先级广播接收者的优先级


    5.最后运行结果



    6.最高优先级的广播可以被终止,由于MyBroadcastReceiverOne的优先级是最高的,因此添加abortBroadcast();函数拦截广播


    当程序执行完代码,广播事件将被终结,不会向下传递


    展开全文
  • 上一篇简单介绍了广播的发送,这篇主要介绍下,有序广播的发送。 设置完相关属性的时候,广播就会按照有序的方式进行发送发送顺序: 第一条广播; 再发送第二条广播; 最后发送第三条广播。 代码如下: 布局...

    上一篇简单介绍了广播的发送,这篇主要介绍下,有序广播的发送。

    设置完相关属性的时候,广播就会按照有序的方式进行发送:

    发送顺序:

    先发送第二条广播;

    再发送第一条广播;

    最后发送第三条广播。

    代码如下:



    布局文件:

    activity_main(一个Button):

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity" >
    
        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:text="点击发送有序广播" />
    
    </RelativeLayout>
    

    MainActivity:

    package com.android_broadcasereceiverdemo2;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    
    public class MainActivity extends Activity {
    	private Button button;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		button = (Button) findViewById(R.id.button1);
    		button.setOnClickListener(new View.OnClickListener() {
    			
    			@Override
    			public void onClick(View v) {
    				Intent intent = new Intent();
    				intent.setAction("myaction");
    				intent.putExtra("name", "梅西");
    				sendOrderedBroadcast(intent, null);
    			}
    		});
    	}
    }
    


    FirstBroadcast:

    package com.android_broadcasereceiverdemo2;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.widget.Toast;
    
    public class FirstBroadcast extends BroadcastReceiver {
    
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		
    		String name = intent.getStringExtra("name");
    		Toast.makeText(context, "第一条广播已发送..."+name, Toast.LENGTH_SHORT).show();
    //		abortBroadcast();//当加上这条代码的时候,广播发送到此结束,即第三条广播不会再收到。
    	}
    
    }
    

    SecondBroadcast:

    package com.android_broadcasereceiverdemo2;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.widget.Toast;
    
    public class SecondBroadcast extends BroadcastReceiver {
    
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		
    		String name = intent.getStringExtra("name");
    		Toast.makeText(context, "第二条广播已发送..."+name, Toast.LENGTH_SHORT).show();
    	}
    
    }
    


    ThirdBroadcast:

    package com.android_broadcasereceiverdemo2;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.widget.Toast;
    
    public class ThirdBroadcast extends BroadcastReceiver {
    
    	@Override
    	public void onReceive(Context context, Intent intent) {
    		
    		String name = intent.getStringExtra("name");
    		Toast.makeText(context, "第三条广播已发送..."+name, Toast.LENGTH_SHORT).show();
    	}
    
    }
    

    AndroidManifest.xml(很关键):

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.android_broadcasereceiverdemo2"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="11"
            android:targetSdkVersion="18" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.android_broadcasereceiverdemo2.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    
            <receiver android:name=".FirstBroadcast" >
                <!-- 有序广播中,priority数值越大,优先级越大,也就越先发送!! -->
                <intent-filter android:priority="99">
                    <action android:name="myaction" />
                </intent-filter>
            </receiver>
            
            <receiver android:name=".SecondBroadcast" >
                <intent-filter android:priority="100">
                    <action android:name="myaction" />
                </intent-filter>
            </receiver>
            
            <receiver android:name=".ThirdBroadcast" >
                <intent-filter android:priority="98">
                    <action android:name="myaction" />
                </intent-filter>
            </receiver>
        </application>
    
    </manifest>


    需要源码的读者可以到我的资源中下载。

    展开全文
  • Android-发送有序广播

    2017-06-04 17:42:43
    2.技术要点:通过sendOrderedBroadcast()方法发送一条有序广播。 (1)用户交互界面设计与实现 (2)界面交互代码的设计与实现 (3)创建3个广播接受者: MyBroadcastReceiverOne.java MyBroadcastReceiverTwo....

    1.功能描述:实现拦截一条有序广播。

    2.技术要点:通过sendOrderedBroadcast()方法发送一条有序广播。

    (1)用户交互界面的设计与实现

    (2)界面交互代码的设计与实现

    (3)创建3个广播接受者:

    MyBroadcastReceiverOne.java

    MyBroadcastReceiverTwo.java

    MyBroadcastReceiverThree.java

    3.实现步骤:(4)设置优先级广播接受者的优先级

    4.有序广播的工作流程:

    发送一条广播——>广播接受器1—|—>广播接收器2—|—>广播接收器3

    实例:

    1、编写用户交互界面

    activity_main.xml
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
    
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/stitch_one"
        tools:context=".MainActivity">
    
        <Button
            android:text="发送有序广播"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
             android:onClick="send"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="80dp"
            android:paddingLeft="5dp"
            android:paddingRight="5dp"
            android:background="#FBFBFF"
             android:textSize="20sp"
             />
    </RelativeLayout>

    2、点击发送有序广播按钮时事件处理

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
        public void send(View view){
            Intent intent=new Intent();
            //定义广播的事件类型
    public class MyBroadcastReceiverThree extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.i("MyBroadcastReceiverThree"," Three接收到广播");
        }
    }
    

    intent.setAction("Intercept_Stitch"); //发送广播 sendOrderedBroadcast(intent,null); }}
    
    


    
    3、创建广播接收者MyBroadcastReceiverOne
    

    public class MyBroadcastReceiverOne extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.i("MyBroadcastReceiverOne"," One接收到广播");
        }
    }

    创建广播接收者MyBroadcastReceiverTwo

    public class MyBroadcastReceiverTwo extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.i("MyBroadcastReceiverTwo"," Two接收到广播");
        }
    }
    
    创建广播接收者MyBroadcastReceiverThree

    public class MyBroadcastReceiverThree extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.i("MyBroadcastReceiverThree"," Three接收到广播");
        }
    }
    



    展开全文
  • 2.技术要点:通过sendOrderedBroadcast()方法实现发送一条有序广播。 (1).用户交互界面设计与实现 (2).界面交互代码的设计与实现 (3).创建3个广播接收者  MyReceiverOne.java  MyReceiverTwo.java ...
  • 有序广播

    2017-06-03 21:24:48
    有序广播是一种同步执行广播,在广播发出之后,同一... 现在我们通过sendOrderedBroadcast()方法发送一条有序广播,其中并设置广播接收者优先级,创建3个广播接受者,具体代码如下: 首先创建一个名为endOrderedB
  • 广播---有序广播

    2017-06-02 10:42:52
    广播分为有序和无序广播,接下来主要讲有序广播 无序广播是一种完全异步执行广播。而有序广播是一种同步执行广播,在广播发出之后,...编写交互代码,sendOrderBroadcast(inter,null)用于发送一有序广播,接收两
  • 有序广播 发送出去广播都 按照一定优先级进行接受二、无序广播 不管有没有接收者,准时播放区别:有许广播可以被终止,数据可以被修改;无序广播不可被重视,数据不可以被修改三、特殊广播接收者屏幕...
  • 案例---拦截有序广播

    2017-06-04 16:58:46
    通过sendOrderedBroadcast()方法发送一条有序广播 1、用户交互界面设计与实现 2、界面交互代码的设计与实现 3、创建3个广播接受者 MyBroadcastReceiverOne.java MyBroadcastReceiverTwo.java ...
  • Android中广播主要分为两种类型:标准广播和有序广播。 标准广播 完全异步在广播 在广播发出后,所有广播接收器几乎在同一时刻接受到这广播信息。 特点:广播效率高、没有任何先后顺序、无法被拦截 5.3 ...
  • 《第代码》学习笔记——第五章 详解广播机制广播机制简介接收系统广播动态注册监听网路变化静态注册发送自定义广播发送标准广播 广播机制简介 ...有序广播种同步执行广播,在广播发出之后,同一
  • Android使用用广播来传递个接收信息,是在Intent上...还有一种就是有序广播,这种广播发出之后,首先是优先级最高的广播,接收到这一条广播信息,然后对这条信息处理之后发送给次优先级的广播接收器,也可以截断广播的
  • 第六章:全局大喇叭,详解广播机制 目录第六章:全局大喇叭,详解广播机制广播类型标准广播与有序广播标准广播有序广播隐式广播与显式广播隐式广播显式...有序广播种同步执行广播,在广播发出之后,同一时间只
  • Android四大组件 —广播使用(Android第代码学习笔记)1、广播2、广播分类3、接收系统广播广播接收器中是不允许开启线程)4、发送自定义广播5、使用本地广播 1、广播 全局大喇叭,种可以跨进程通信方式 ...
  • Android 中广播主要分两种类型:标准广播和有序广播。 标准广播(Normal broadcasts)   是种完全异步执行广播,在广播发出之后,所有广播接收器几乎都会在同一时刻接收到这广播消息,因此它们之间...
  • 发送广播的方法就是借助Intent。而接收广播的方法则需要广播接收器(Broadcast Receiver)。 标准广播(Normal broadcasts)是种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻...
  •  Android提供了完整API,应用程序可以发送和接受广播。 2:广播分为有序广播和标准广播  标准广播:  发出广播后,广播接收器同一时刻接受到这广播。  有序广播:  广播有优先顺序,根据优先级别,...
  • 广播接收者案例

    2017-06-02 21:55:20
    技术要点:通过sendOrderedBroadcast()方法发送一条有序广播 (1) 用户交互界面设计与实现 (2) 界面交互代码的设计与实现 (3) 创建3个广播接收者: MyBroadcastReceiverOne.java ...
  • 第五章 广播机制 1. 发送广播借助Intent,接收广播使用广播接收器。... ...如手机开机发送一条广播,电池电量变化发出一条广播,时间或时区改变的广播等。 动态注册:代码中注册,可以自由地控...
  • 当android手机状态发生变化时,系统就会发送一条广播,而开发者则可以自定义广播接收器来接受自己所需的广播,从而执行一些逻辑代码(例如:当手机电量剩余15%时,提示用户是否进入省电模式),另外不止系统可以...
  • 第五章主要介绍了Android中的广播机制。 ...Android允许应用程序自由地发送和接收广播。...标准广播种完全异步执行的广播广播发出后,所有广播接收器几乎会在同一时刻接收到这条广播消息,没有先后顺序
  • 前言:当android手机状态发生变化时,系统就会发送一条广播,而开发者则可以自定义广播接收器来接受自己所需的广播,从而执行一些逻辑代码 广播类型 标准广播:一种完全异步执行的广播,在广播发送后,所有的广播...
  • 有序广播:属于同步执行广播 广播发出去只有一个广播接受器能接受这一条广播。接受完毕以后广播接受器可以选择拦截或者,继续传给下一个接受器,优先级高优先收到广播 效率比较低。广播的两种注册方式静态:在清单...
  • 22.3 有序广播 341 22.4 粘滞广播 342 22.5 检查手机状态是否联网 344 22.6短信拦截 346 22.7 电话拦截 349 23.1启动服务 350 23.2 IntentService使用 354 23.3 绑定服务 356 23.4 boundservicewithinterface 362 ...
  • 疯狂Android讲义源代码

    2016-11-08 21:23:53
    10.8.3 有序广播 10.9 接收系统广播消息 10.10 本章小结 第11章 多媒体应用开发 11.1 音频和视频播放 11.1.1 使用MediaPlayer播放音频 11.1.2 音乐特效控制 11.1.3 使用SoundPool播放音效 11.1.4 使用VideoView...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

发送一条有序广播的代码