繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM