【原创】Android Broadcast广播 个人总结

广播分为动态广播和静态广播

静态广播:1. 常驻

                    2. 当App被杀死时收到广播会被唤醒

                    3. 不受组件(如Activity)生命周期的影响

动态广播:1. 永远比静态快

                    2. 不常驻,生命周期跟随Activity的生命周期

                    3. 要记得注销

BroadcastReceiver实例的生命周期很短,执行完就被销毁,每次都重新创建,所以里面的成员变量无法保存它们的值。

内部机制(动态注册广播情况):

    1. 通过sendBroadcast把一个广播通过Binder发送给AMS,AMS根据这个广播的Action类型找到相应的广播接收器,然后把这个广播放到自己的消息队列里。

    2. AMS在消息循环中处理这个广播,并通过binder把广播分发给注册的广播接收分发器ReceiverDispatcher,ReceiverDispatcher把这个广播放进Activity所在线程的消息队列中去。

    3. ReceiverDispatcher的内部类Args在Activity所在的线程消息循环中处理这个广播,最终将广播分发给注册的对应BroadcastReceiver进行处理。

你可能感兴趣的:(【原创】Android Broadcast广播 个人总结)