Android:检测View的父活动是否已暂停

时间:2010-06-20 22:25:41

标签: android view android-activity listener

在我的一个活动中,我有一个显示位置列表的ListView。对于每个列表项,我想要一个指向相应位置方向的小箭头图标。我通过扩展ImageView实现了这个图标。此自定义视图具有一个侦听器,通过相应地旋转图标图像来响应设备方向的更改。我在onAttachedToWindow()方法中注册了监听器,并在onDetachedFromWindow()中取消注册。这样的工作但问题是onDetachedFromWindow()有时在包含的Activity暂停后很长一段时间被调用。此外,整体布局整体看起来有点hacky。所以我的问题是:是否有一种正确的方式来取消注册听众,或者你会以一种完全不同的方式实现这一点吗?

1 个答案:

答案 0 :(得分:1)

我认为你遇到了困难,因为你的设计就像你承认的那样是hacky。我认为您应该做的是让您的Activity监听设备方向,并使用onPause/onResume来处理注册方向更改。然后有一个自定义光标,当Activity更改时由Activity更新。然后,自定义光标可以调用notifyDataSetChanged告诉ListView更新。然后在getView调用中,您可以传递箭头正确显示所需的数据。这样,将要更新的唯一箭头是可见的箭头。您只有一个地方可以接收方向数据,之后您可以处理onScrollStateChanged并在用户滚动时停止更新箭头,如果它过多地影响滚动动画。