何时为自定义View类注册/取消注册广播接收器?

时间:2015-08-29 15:22:51

标签: android broadcastreceiver android-view

我有一个扩展View的自定义类。在那个课程中,我想基于广播做一些事情,所以我注册了一个BroadcastReceiver何时是为自定义View实施注册和取消注册BroadcastReceiver的最佳时间?对我来说,它似乎不像活动一样直接。

我现在正在做的事情是覆盖onWindowVisibilityChanged()。在那里,我检查提供的int visibility,如果是VISIBLE我注册。否则,我会取消注册。我现在意识到这是有问题的,因为onWindowVisibilityChanged()说了这个,

  

请注意,这会告诉您窗口管理器是否可以看到您的窗口;这并不能告诉您窗口是否被屏幕上的其他窗口遮挡,即使它本身可见。

如果我的视图不可见,我不希望我的BroadcastReceiver接收广播。虽然,我现在知道它可以被标记为VISIBLE,但屏幕上的其他东西可以在它前面。所以,这不可靠。

1 个答案:

答案 0 :(得分:0)

您必须使自定义视图可识别活动/片段生命周期,即您必须通知它发生onResume()/ onPause()(或分别为其他对)并注册/取消注册。我认为没有更好的方法。