美文网首页
本地广播

本地广播

作者: 爱做梦的严重精神病患者 | 来源:发表于2018-08-28 17:13 被阅读0次

1.发送广播

 广播是一种可以跨进程的通信方式。因此在这个应用程序内发出的广播其他的应用程序应该也是可以收到的。


发送标准广播:使用sendBroadcast(intent),intent上附加注册广播接收器时所添加的内容。
发送有序广播:使用sendOrderBroadcast(intent, string),同时在广播接收器注册中,用android:priority设置优先级,优先级大的先接收

<receiver android:name=".MyBroadcastReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter android:priority="100">
                <action android:name="XXXXXXX"/>
            </intent-filter>      
        </receiver>

 若要在接收后截断广播的传播,则在先接收到广播的广播接收器的onReceiver()方法中调用abortBroadcast()


2.本地广播

 前面发送和接收的广播都属于系统全局广播,即发出的广播可以被其他任何应用程序接收到,并且也可以接收来自其他任何应用程序的广播
本地广播机制:使用LocalBroadcastManager发出的广播只能在应用程序的内部进行传递,并且使用广播接收器也只能接收来自这个应用程序发出的广播。用以解决安全性问题。
本地广播无法用静态注册方式进行注册,只能使用动态注册
 详见下:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        //获得实例
        mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
     
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("XXXXXXXX");
        //注册本地广播接收器
        mLocalBroadcastManager.registerReceiver(mLocalReceiver, intentFilter);

          Intent intent = new Intent("XXXXXXXX");
        //发送本地广播
        mLocalBroadcastManager.sendBroadcast(intent);
    }

@Override
    protected void onDestroy() {
        super.onDestroy();
        mLocalBroadcastManager.unregisterReceiver(mLocalReceiver);
    }

class LocalReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context, "receive", Toast.LENGTH_SHORT).show();
        }
    }


3.ViewGroup事件分发机制

ViewGroup事件分发机制.png

4.View事件分发机制

 对于dispatchTouchEvent()所返回的boolean变量的值:

 当值为true时,意味着,对于同一方法例如:onTouch或
onTouchEvent中,当ACTION_DOWN执行后,会继续执行ACTION_MOVE和ACTION_UP等操作

 当值为false时,意味着,执行完ACTION_DOWN后便不再执行


 对于onTouch()和onTouchEvent()所返回的boolean变量的值:

onTouch()优于onTouchEvent()先执行。如果在onTouch()方法中通过返回true将事件消费掉,onTouchEvent()将不会再执行。

 当值为true时,意味着,已经将此行为消耗掉,不会再继续传入下一个方法(例如onClick()中去再次执行)。

 当值为false时综合判断dispatchTouchEvent()所返回的boolean变量的值。

相关文章

  • Android本地广播详解

    本地广播用途 本地广播用于同一个app内通信(是否可以多进程通信?),且其他app无法接收到本地广播的消息,可以大...

  • 本地广播

    1.发送广播  广播是一种可以跨进程的通信方式。因此在这个应用程序内发出的广播,其他的应用程序应该也是可以收到的。...

  • 本地广播

    1 本次广播都是自定义的广播,自己发送,自己接收。2 本次广播只在本应用程序内部有效,不会传递到其他应用程序中,这...

  • 本地广播原理

    简介 本地广播:发送的广播事件不被其他应用程序获取,也不能响应其他应用程序发送的广播事件。本地广播只能被动态注册,...

  • 第一行代码

    —— 广播机制 纲要 广播简介 广播接收动态注册静态注册 广播发送标准广播有序广播 本地广播 最佳实践 简介-全局...

  • 使用本地广播

    使用本地广播 本地广播的优势: 广播不会离开我们的程序,不会被其他的程序所接收到,即数据信息不会泄露; 同样,其他...

  • 我要做 Android 之 广播

    广播的分类: 普通广播 有序广播 本地广播 粘性广播 一:普通广播 普通广播是一种完全异步执行的广播,在广播发出之...

  • Android - base - Broadcast

    四大组件之广播 大纲 广播机制简介 广播接收器 广播发信器 接收系统广播 发送自定义广播 本地广播 #广播机制简介...

  • 四大组建-Broadcast

    广播 1.广播的动态注册 清单文件权限申请 2.发送标准广播 3.接收本地广播 广播实现强制下线

  • Android学习笔记之Broadcast Receiver

    内容目录 广播的定义 广播的用途(信息传输与共享和通知) 广播的使用场景 广播主要的种类(普通广播、有序广播和本地...

网友评论

      本文标题:本地广播

      本文链接:https://www.haomeiwen.com/subject/nihqwftx.html