java.lang.Object | |
↳ | android.content.BroadcastReceiver |
![]() |
Class Overview
| 您可以动态注册这个类Context.registerReceiver()或静态的实例,通过发布在AndroidManifest.xml中的<接收>标记的实现。
注意:如果您的Activity.onResume()实现注册一个接收器,就应该注销它Activity.onPause()。 (暂停时您将不会收到意图,这将减少不必要的系统开销)。不要在Activity.onSaveInstanceState()注销,因为如果用户移回在历史堆栈,这将不会被调用。
有可接收广播的两个主要的类:
即使在正常的广播节目的情况下,该系统可以在某些情况下恢复到一次递送广播一个接收机。特别地,对于可能需要一个过程的创建接收机,只有一个将在同一时间运行,以避免过载系统的新工艺。在这种情况下,然而,非有序语义持有:这些接收器仍然不能返回结果或中止其广播。 需要注意的是,虽然意图类用于发送和接收这些广播,这里的意图的广播机制是从被用于启动与Context.startActivity活动意图完全独立的()。有没有办法为一个BroadcastReceiver看到或与startActivity用于捕获的Intent();同样,当您广播一个Intent,你永远不会找到或启动活动。这两个操作在语义上非常不同的:开始用一意图一个活动是修改什么用户当前使用交互的前台操作;广播的意图是,用户通常不知道一个后台操作。 Topics covered here:
接收器生命周期
流程生命周期当前正在执行一个BroadcastReceiver(也就是,当前运行在它的onReceive(上下文代码,意图)方法)进程被认为是一个前台进程,将保留除在极端的内存压力的情况下,由系统运行。 一旦你的onReceive()返回时,广播接收器不再是活动的,它的宿主进程仅仅是作为在它运行的任何其他应用程序组件一样重要。这一点尤其重要,因为如果这个过程只举办广播接收器(对于该用户从未与否最近与互动应用程序的常见情况),那么在从的onReceive()返回系统将审议其过程是空的,积极杀死它使资源可用于其他更重要的进程。 这意味着,对于长时间运行的操作,你会经常一起使用服务与一个BroadcastReceiver来保持包含进程的积极为您的操作的全部时间。 |