and*_*per 19 android broadcastreceiver
在Android上,有两种方法可以通过BroadcastReceivers监听系统事件:
由于某些项目包含许多活动,服务和"管理器"类,因此让一个BroadcastReceiver通知应用程序上的所有侦听器有关已发生的事情,而不是使用多个BroadcastReceiver可能很有用(和他们的代码处理).
此类BroadcastReceiver的一个示例是侦听连接更改的示例:
@Override
public void onCreate() {
super.onCreate();
...
registerReceiver(new ConnectivityChangedBroadcastReceiver(), new IntentFilter(
ConnectivityManager.CONNECTIVITY_ACTION));
...
}
Run Code Online (Sandbox Code Playgroud)
目的是在应用程序"活着"时(通过服务和/或活动)收听事件.
使用清单会错过这个目的,因为它会在每次事件发生时唤醒应用程序,即使应用程序不需要它.
事实是,取消注册不会发生,也许它会导致操作系统以不同的方式对待应用程序.
在从Application扩展的类上调用"registerReceiver"是一个众所周知的做法吗?
使用时是否有任何副作用和需要了解的事项?
有没有替代方案?
我只是想确保它被认为是安全的.
我们真的不知道什么对你好或好.
我建议你更多地了解接收器的注册方式之间的区别:
1 /在清单中:每次通讯事件发生时,都会触发接收器的处理程序.示例:每当您有互联网连接向您显示通知时,Facebook的信使就会被发送...或者当您连接建议更新时,其他应用程序被启动...换句话说,接收器始终是注册的.
2 /在服务或活动或应用程序中:当登记者被杀害的背景被取消时,接收者将被取消登记.换句话说,它完全取决于注册的上下文,并且您必须在代码中的某处取消注册它.例如:一个活动正在等待服务(在后台做某事)发送警报以更新某些内容,然后您可以在您的onResume()注册表中注册接收器并在其中取消注册onPause().
结论:它仅取决于接收器的生命周期要求.
另请参阅清单与活动中的广播接收器注册
BroadcastReceiver的Manifest和Programmatic注册之间的主要区别
| 归档时间: |
|
| 查看次数: |
9078 次 |
| 最近记录: |