现在的位置: 首页 > 移动开发> 正文
Android 电源管理专题之管理广播接收器 Broadcast Receivers
2011年12月31日 移动开发 暂无评论 ⁄ 被围观 4,625+


最简单的监测设备状态变更的做法就是为每一个状态的变化都创建一个对应的 BroadcastReceiver ,然后在 BroadcastReceiver 的实现代码中,取得设备当前的状态来调整应用程序的运行任务。

但是这样做有一个缺点就是可能您的应用程序会过于频繁的唤醒设备来处理状态的变更,这往往不是您期待的结果。

一个更好的解决办法就是在程序的运行过程中动态的启用和禁用广播事件接收器,这样您就可以只启用目前最关心的广播事件接听器,而禁用掉现在并不需要的事件接听器。

动态切换和级联事件接器

您可以使用 PackageManager 来管理 manifest 中声明的广播接收器,示例代码展示了如何利用这一技术来启用和禁用相应的广播接收器。

ComponentName receiver = new ComponentName(context, myReceiver.class);

PackageManager pm = context.getPackageManager();

pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP)

通过使用这一技术,如果设备当前处在未联网的状态,那么您的应用程序可以禁用除网络事件接收器以外所有其他的广播事件接听器。相反,一旦您确定设备已经连接到了网络,那么就可以停止监听网络状态变化的监听器,然后简单检查一下是否能连接互联网,如果能的话就可以执行应用程序的数据更新任务了。

同样,您也可以使用该技术来延迟启动一个需要较高带宽的大网络文件的下载,通过简单注册一个网络连接状态切换的事件监听器,只有当设备切换到 wi-fi 状态的时候才启动文件的下载工作。

参考文摘:
http://developer.android.com/training/monitoring-device-state/manifest-receivers.html

给我留言

留言无头像?


×
腾讯微博