[英]When to register/unregister a Broadcast Receiver for a custom View class?
我有一个扩展View的自定义类。 在该课程中,我想基于广播做一些事情,因此我注册了一个BroadcastReceiver 。 什么时候是为自定义View实现注册和注销BroadcastReceiver的最佳时间? 对我来说,这似乎不像一项活动那么直接。
当我现在正在做的时候,是重写onWindowVisibilityChanged()
。 在那里,我检查所提供的int visibility
,如果它是VISIBLE
我注册。 否则,我将取消注册。 我现在意识到这是有问题的,因为onWindowVisibilityChanged()
说,
注意,这告诉您窗口管理器是否可以看到您的窗口。 这不会告诉您您的窗口是否被屏幕上的其他窗口遮盖,即使它本身是可见的。
如果我的View不可见,我不希望我的BroadcastReceiver接收广播。 虽然,我现在知道,它可以被标记为VISIBLE
,但没有别的屏幕上的内容可以在它的前面。 因此,这是不可靠的。
您必须使自定义视图“活动/片段”生命周期感知,即,您必须通知它onResume()/ onPause()发生了(或分别发生在其他对中)并注册/注销。 我认为没有更好的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.