返回介绍

根據需要操作Broadcast接受者

发布于 2020-04-01 13:16:51 字数 1370 浏览 993 评论 0 收藏 0

編寫:kesenhoo - 原文:http://developer.android.com/training/monitoring-device-state/manifest-receivers.html

監測設備狀態變化最簡單的方法,是為你所要監聽的每一個狀態創建一個BroadcastReceiver,並在Manifest文件中註冊它們。之後就可以在每一個BroadcastReceiver中,根據當前設備的狀態調整一些計劃任務。

上述方法的副作用是:一旦你的接收器收到了廣播,應用就會喚醒設備。喚醒的頻率可能會遠高於需要的頻率

更好的方法是在程序運行時開啟或者關閉BroadcastReceiver。這樣的話,你就可以讓這些接收器僅在需要的時候被激活。

切換是否開啟接收器以提高效率

我們可以使用PackageManager來切換任何一個在Mainfest裡面定義好的組件的開啟狀態。通過下面的方法可以開啟或者關閉任何一個BroadcastReceiver:

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

PackageManager pm = context.getPackageManager();

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

使用這種技術,如果我們確定網絡連接已經斷開,那麼可以在這個時候關閉除了監聽網絡狀態變化的接收器之外的其它所有接收器。

相反的,一旦重新建立網絡連接,我們可以停止監聽網絡連接的改變,而僅僅在執行需要聯網的操作之前判斷當前網絡是否可以用。

同樣地,你可以使用上面的技術來暫緩一個需要更高帶寬的下載任務。這僅需要啟用一個監聽網絡連接變化的BroadcastReceiver,並在連接到Wi-Fi時,初始化下載任務。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文