zoukankan      html  css  js  c++  java
  • Android -- 发送Broadcast、有序无序

    普通广播                                                                                    

    • 优缺点:和有序广播的优缺点相反!
    • 发送广播的方法:sendBroadcast()

    有序广播                                                                                  

    • 优缺点

    优点:1,按优先级的不同,优先Receiver可对数据进行处理,并传给下一个Receiver

    2,通过abortBroadcast可终止广播的传播  

    缺点:效率低  

    • 发送广播的方法:sendOrderedBroadcast()
    • 优先接收到Broadcast的Receiver可通过setResultExtras(Bundle)方法将处理结果存入Broadcast中,下一个Receiver 通过 Bundle bundle=getResultExtras(true)方法获取上一个 Receiver传来的数据。

    工程                                                                                          

    imageMainActivity.java是程序住进口。

    MyBroadcastReceiver.java等都是广播接收者,只是等级不一样。

    FinalRecevier.java是有序广播的时候,即使广播被拦截了,这个还是可以接收到广播的。

    <receiver android:name=".MyBroadcastReceiver">
                <intent-filter android:priority="1000">
                    <action android:name="com.yydcdut.nima"/>
                </intent-filter>
            </receiver>
            <receiver android:name=".MyBroadcastReceiver2">
                <intent-filter android:priority="100">
                    <action android:name="com.yydcdut.nima"/>
                </intent-filter>
            </receiver>
            <receiver android:name=".MyBroadcastReceiver3">
                <intent-filter android:priority="10">
                    <action android:name="com.yydcdut.nima"/>
                </intent-filter>
            </receiver>
            <receiver android:name=".FinalRecevier">
                <intent-filter>
                    <action android:name="com.yydcdut.nima"/>
                </intent-filter>
            </receiver>

    在MyBroadcastReceiver.java中,代码都差不多:

    public class MyBroadcastReceiver extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            System.out.println("MyBroadcastReceiver1111111接受到的广播");
            Toast.makeText(context, "MyBroadcastReceiver", Toast.LENGTH_SHORT).show();
            
        }
    
    }

    在MainActivity.java中:

    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
        public void click(View view)
        {
            Intent intent = new Intent();
            intent.setAction("com.yydcdut.nima");
            //无序广播
            sendBroadcast(intent);
            //有序广播
            //sendOrderedBroadcast(intent, null);
            
            //sendOrderedBroadcast(intent, null, new FinalRecevier(), null, 0, null, null);
        }
    }

    在某个广播接收的类中加入

    abortBroadcast();

    这是去拦截广播,但是FinalRecevier还是接收到了的,无论怎么拦截广播。

    我是天王盖地虎的分割线                                                                

    源代码:http://pan.baidu.com/s/1dD1Qx01

    广播发送.zip

    转载请注明出处:http://www.cnblogs.com/yydcdut

  • 相关阅读:
    基于 HTML5 Canvas 的交互式地铁线路图
    基于HTML5的WebGL实现json和echarts图表展现在同一个界面
    基于HTML5和WebGL的3D网络拓扑结构图
    JavaScript基础:创建对象
    使用ksoap2报java.io.EOFException异常问题解决方法
    Silverlight之我见
    今年的IT大趋势是虚拟现实
    Apache服务器部署ASP.NET网站
    Bootstrap优秀网站:乐窝网
    [转载]C#读取Excel几种方法的体会
  • 原文地址:https://www.cnblogs.com/yydcdut/p/3803666.html
Copyright © 2011-2022 走看看