广播机制 ▣广播消息的过程 ■消息发送 口无序广播sendBroadcast 口有序广播sendOrderBroadcast 口持续广播sendStickyBroadcast ,广播消息的实质就是一个Intent>对象。使用sendBroadcast ()或sendStickyBroadcast(O方法发出去的Intent,.所有满足 条件的BroadcastReceiver都会随机地执行其onReceive()方 法;而sendOrderBroadcast(O发出去的Intent,会根据 BroadcastReceiver注册时Intent Filter设置的优先级的顺序 来执行,相同优先级的BroadcastReceiver!则是随机执行。 sendStickyBroadcast()方法主要的不同的是,Intent在发送 后一直存在,并且在以后调用registerReceiver注册相匹配 的BroadcastReceiverl时会把这个Intent]直接返回
广播机制 q 广播消息的过程 n 消息发送 q 无序广播sendBroadcast q 有序广播sendOrderBroadcast q 持续广播sendStickyBroadcast § 广播消息的实质就是一个Intent对象。使用sendBroadcast ()或sendStickyBroadcast ()方法发出去的Intent,所有满足 条件的BroadcastReceiver都会随机地执行其onReceive()方 法;而sendOrderBroadcast ()发出去的Intent,会根据 BroadcastReceiver注册时Intent Filter 设置的优先级的顺序 来执行,相同优先级的BroadcastReceiver则是随机执行。 sendStickyBroadcast()方法主要的不同的是,Intent在发送 后一直存在,并且在以后调用registerReceiver注册相匹配 的BroadcastReceiver时会把这个Intent直接返回
广播机制 BroadcastReceiver的生命周期 BroadcastReceiveri的onReceive()方法执行完成后, BroadcastReceiver的实例就会被销毁。如果 onReceive()方法在1Os内没有执行完毕,Android会认 为改程序无响应。所以在BroadcastReceiver.里不能做 一些比较耗时的操作,否则会弹出“Application NoResponse”对话框。特别说明的是,这里不能使用子 线程来解决,因为BroadcastReceiveri的生命周期很短 ,子线程可能还没有结束BroadcastReceiver就先结束 了。BroadcastReceiver-一旦结束,此时它所在的进程 很容易在系统需要内存时被优先杀死,因为它属于空进 程
广播机制 n BroadcastReceiver的生命周期 q BroadcastReceiver的onReceive()方法执行完成后, BroadcastReceiver的实例就会被销毁。如果 onReceive()方法在10s内没有执行完毕,Android会认 为改程序无响应。所以在BroadcastReceiver里不能做 一些比较耗时的操作,否则会弹出“Application NoResponse”对话框。特别说明的是,这里不能使用子 线程来解决,因为BroadcastReceiver的生命周期很短 ,子线程可能还没有结束BroadcastReceiver就先结束 了。BroadcastReceiver一旦结束,此时它所在的进程 很容易在系统需要内存时被优先杀死,因为它属于空进 程
广播机制 sendBroadcast和sendStickyBroadcastl的☒区别 sendBroadcast中发出的intent在ReceiverActivity不 处于onResume:状态是无法接受到的,即使后面再 次使其处于该状态也无法接受到。 而sendStickyBroadcast发出的Intent当 ReceverActivity重新处于onResume状态之后就能 重新接受到其Intent.这就是the Intent will be held to bere-broadcast to future receivers这句话的表现。 就是说sendStickyBroadcast?发出的最后一个Intent 会被保留,下次当Recevier处于活跃的时候,又会 接受到它
广播机制 n sendBroadcast和sendStickyBroadcast的区别 q sendBroadcast中发出的intent在ReceiverActivity不 处于onResume状态是无法接受到的,即使后面再 次使其处于该状态也无法接受到。 而sendStickyBroadcast发出的Intent当 ReceverActivity重新处于onResume状态之后就能 重新接受到其Intent.这就是the Intent will be held to be re-broadcast to future receivers这句话的表现。 就是说sendStickyBroadcast发出的最后一个Intent 会被保留,下次当Recevier处于活跃的时候,又会 接受到它
消息机制 ·基本介绍 口采用消息机制的目的是完成主线程与子线程之间的 消息传递 口当一个程序第一次后动的时候,Android会后动一 个LINUX进程和一个主线程(Main Thread)。默 认的情况下,所有该程序的组件都将在该进程和线 程中运行
消息机制 n 基本介绍 q 采用消息机制的目的是完成主线程与子线程之间的 消息传递 q 当一个程序第一次启动的时候,Android会启动一 个LINUX进程和一个主线程(Main Thread)。默 认的情况下,所有该程序的组件都将在该进程和线 程中运行
消息机制 ■基本介绍 口主线程主要负责处理与U川相关的事件,如:用户的 按键事件,用户接触屏幕的事件以及屏幕绘图事件, 并把相关的事件分发到对应的组件进行处理。所以 主线程通常又被叫做U线程。 口在开发Android应用时必须遵守单线程模型的原则: Android Ul操作并不是线程安全的,并且这些操作 必须在U线程中执行。 ■1.不要阻塞U川线程 2.确保只在U线程中访问Android Ul toolkit,.禁止子线程 更新主线程的U川组件
消息机制 n 基本介绍 q 主线程主要负责处理与UI相关的事件,如:用户的 按键事件,用户接触屏幕的事件以及屏幕绘图事件, 并把相关的事件分发到对应的组件进行处理。所以 主线程通常又被叫做UI线程。 q 在开发Android应用时必须遵守单线程模型的原则: Android UI操作并不是线程安全的,并且这些操作 必须在UI线程中执行。 n 1. 不要阻塞UI线程 n 2. 确保只在UI线程中访问Android UI toolkit,禁止子线程 更新主线程的UI组件