android - 在 fragment 中注册和注销 BroadcastReceiver

标签 android android-fragments broadcastreceiver

我的应用有一个带有 3 个 fragment 选项卡的操作栏。 在第二个 fragment 中,我注册和注销了一个 BroadcastReceiver。 我在 onPause 中取消注册接收器并在 onCreateViewonResume 中注册它。

getActivity().registerReceiver(this.batteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

getActivity().unregisterReceiver(batteryInfoReceiver);

1) 两次注册同一个receiver可以吗(在onCreateView和onResume中)?(是否无害?)

2) 在 onResume 中注册收件人就够了吗?

最佳答案

看看life-cycle fragment :

onCreateView(): 当 fragment 第一次绘制其用户界面时,系统会调用它。要为您的 Fragment 绘制 UI,您必须从此方法返回一个 View,它是 Fragment 布局的根。如果 fragment 不提供 UI,则可以返回 null。

onResume(): 该 fragment 在正在运行的 Activity 中可见

onPause(): 这通常是您应该提交任何应该在当前用户 session 之后保留的更改(因为用户可能不会回来)。

结论:

所以最好只在 onResume() 内注册接收器,而在 onPause() 内取消注册,因为 onCreateView() 只处理 View 层次结构。它与接收器无关。所以它没有害处,但肯定是没用的。

希望对你有帮助!!

关于android - 在 fragment 中注册和注销 BroadcastReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16616654/

相关文章:

android - android :exported ="true" in BroadcastReceiver有什么用

java - 单击按钮时略有延迟

android - 如何在 DOS 提示符下将 android 的 logcat 保存在文本文件中?

android - 如何阻止多个 Activity 在按下主页按钮时启动

java - 使用相同方法的多个 fragment

java - 如何替换 onOptionsItemSelected 中的 fragment ?

android - 如何在android中制作应用程序锁定应用程序?

Android APK 重新签名 :Certificate chain not validated

Android Toolbar + Tab Layout + Drawer,滚动时隐藏工具栏并将TabLayout带到顶部

android - BroadcastReceiver未接收 Intent