本地广播

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变量的值。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,135评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,274评论 25 708
  • 【Android 广播】 BroadcastReceiver简介 BroadcastReceiver(广播接收器)...
    Rtia阅读 3,582评论 1 17
  • 像登山一样,工作也需要一步一个脚印地积累实力和经验。所以不管是对于刚入社会的新人,还是久经沙场的老将来说,踏踏实实...
    6冬6阅读 3,454评论 0 0
  • 随着《北京遇上西雅图不二情书2》的上映,房产中介吴秀波演的角色大牛(Daniel)的口号“买断美国”,高中生浩浩的...
    留学咖啡馆阅读 962评论 0 1

友情链接更多精彩内容