The*_*heo 22 android broadcastreceiver android-fragments
是否有可能在片段中动态注册广播接收器以侦听连接状态变化?如果是这样的话?如果没有,片段有哪些变通方法?
编辑:要注册BroadcastReceiver,您需要一个Context.由于片段存在于活动中,因此获取Context的最佳方法可能就是使用getActivity().但是,正如gnorsilva在下面解释的那样,有一些特殊情况需要注意.
gno*_*lva 30
user853583建议是一个很好的建议,但如果您需要访问片段内的上下文,您应该使用 getActivity().getApplicationContext()
您应该尽可能避免将活动作为上下文传递,因为这会引入内存泄漏 - 某些对象在调用onDestroy()之后将保留该活动,并且不会进行垃圾回收.
话虽如此,有些情况下您确实需要将活动作为上下文传递 - 例如:用于列表适配器
还有两件事:
因为片段是从活动中附加和分离的,所以有时会getActivity()返回null - 你可以在某些生命周期方法中安全地调用它,你知道某个活动是活着的,例如:onResume()
如果您的片段没有保留其实例,即在方向更改时被销毁,请确保在片段中取消注册您的接收器,例如内部onPause()或onDestroy()
| 归档时间: |
|
| 查看次数: |
20869 次 |
| 最近记录: |