我有一个扩展View的自定义类。在那个课程中,我想基于广播做一些事情,所以我注册了一个BroadcastReceiver。 何时是为自定义View实施注册和取消注册BroadcastReceiver的最佳时间?对我来说,它似乎不像活动一样直接。
我现在正在做的事情是覆盖onWindowVisibilityChanged()
。在那里,我检查提供的int visibility
,如果是VISIBLE
我注册。否则,我会取消注册。我现在意识到这是有问题的,因为onWindowVisibilityChanged()
说了这个,
请注意,这会告诉您窗口管理器是否可以看到您的窗口;这并不能告诉您窗口是否被屏幕上的其他窗口遮挡,即使它本身可见。
如果我的视图不可见,我不希望我的BroadcastReceiver接收广播。虽然,我现在知道它可以被标记为VISIBLE
,但屏幕上的其他东西可以在它前面。所以,这不可靠。
答案 0 :(得分:0)
您必须使自定义视图可识别活动/片段生命周期,即您必须通知它发生onResume()/ onPause()(或分别为其他对)并注册/取消注册。我认为没有更好的方法。