zoukankan      html  css  js  c++  java
  • 转: 从现实生活中理解什么是广播机制

    来自:http://blog.sina.com.cn/s/blog_714338950100p4km.html

          一听到广播我们第一感觉就会联想到小时候村里面的广播,每逢村里有什么活动都是通过广播发送的。收听收音机也是一种广播,在收音机中有很多个广播电台,每个广播电台播放的内容都不相同。接收广播时广播(发送方)并不在意我们(接收方)接收到广播时如何处理。好比我们收听交通电台的广播,电台中告诉我们现在在交通状况如何,但它并不关心我们接收到广播时做如何做出处理,这不是广播应该关心的问题,OK,到这里我们从生活中的一些小例子浅浅的理解了一下广播,那么Android 中的广播是如何操作的呢?

        Android里的广播机制

          在 Android 里面有各种各样的广播,比如电池的使用状态,电话的接收和短信的接收都会产生一个广播,应用程序开发者也可以监听这些广播并做出程序逻辑的处理。

        案例分析

          一个经典的电话黑名单,首先通过将黑名单号码保存在数据库里面,当来电时,我们接收到来电广播并将黑名单号码与数据库中的某个数据做匹配,如果匹配的话则做出相应的处理,比如挂掉电话、比如静音等等。。。

     

       Android系统里可以接收和发送广播,在Android里可以接收和发送两种形式的广播:

        一、接收系统广播:

           接收系统广播需要两步:

            1.编写一个继承BroadcastReceiver的类,并实现BroadcastReceiver里的onReceiver方法。如果应用程序接收到系统发送的广播,就会调用onReceiver方法。

            2.在AndroidManifest.xml文件里使用<receiver/>标签来配置上步中定义的类以及接收到哪一个Broadcast Action。

        二、在自己的应用程序里发送广播:

            如果在自己的应用程序中发生某些动作时想通知其他的应用程序或向其他应用程序传递数据,就可以考虑通过sendBroadcast方法发送广播。

            使用sendBroadcast方法发送的数据实际上也是Intent对象,只是该Intent对象指定的是Broadcast Action,而不是Activity Action。

            例如:Intent broadcastIntent = new Intent("自己定义的类名");

                  sendBroadcast(broadcastIntent);

        ****总结(在自己的应用程序里发送广播)****   

    • 在Android 中如果要发送一个广播必须使用sendBroadCast 向系统发送对其感兴趣的广播接收器中。
    • 使用广播必须要有一个intent 对象必设置其action动作对象
    • 使用广播必须在配置文件中显式的指明该广播对象
    • 每次接收广播都会重新生成一个接收广播的对象
    • 在BroadCast 中尽量不要处理太多逻辑问题,建议复杂的逻辑交给Activity 或者 Service 去处理
    <receiver android:name=".BootCompletedReceiver">  
                <intent-filter>  
                    <action android:name="android.intent.action.BOOT_COMPLETED"/>  
                </intent-filter>  
            </receiver> 
    public class BootCompletedReceiver extends BroadcastReceiver
    {
    
        @Override
        public void onReceive(Context context, Intent intent)
        {
            Log.i("MainActivity", "系统启动完毕");
        }
    }
  • 相关阅读:
    pycharm快捷键
    类变量、实例变量--python
    内置窗口 pyqt5
    Python GUI教程(六):使用Qt设计师进行窗口布局
    PyCharm中Qt Designer+PyUIC配置
    PyQT5堆叠布局:切换界面(QStackedLayout)
    面试题之位运算的巧妙应用
    mybatis之Mapped Statements collection does not contain value for...错误原因分析
    tomcat报错Exception loading sessions from persistent storage解决方案
    leetcode数据库sql之Delete Duplicate Emails
  • 原文地址:https://www.cnblogs.com/zuiyirenjian/p/4148958.html
Copyright © 2011-2022 走看看