我已经阅读了https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.html中的android文档.
我不明白文档中关于recycle()和refresh()方法的描述.
1. recycle() - 返回一个实例以便重用.
2. refresh() - 使用它所代表的视图的最新状态刷新此信息
Android Accessibility API使用AccessibilityNodeInfo节点池.这样,迭代大树不会创建许多会减慢垃圾收集器的对象.换句话说,当您循环()一个节点时,您可能稍后(例如,在下一个事件上,或在同一树上迭代时)再次接收完全相同的节点对象,但填充完全不同的细节.这就是为什么重要的是你不要保留对已经回收的节点的引用(例如尝试将它们与其他节点进行比较).
获取子节点时,必须回收每个子节点.当你没有得到它们时,你不需要回收它们.您可以在回收父项之前回收子项,反之亦然,具体取决于您需要访问对象的时间长度.
收到节点时,它包含最新状态.但是当您对其执行操作(例如,单击或滚动)时,节点或其他节点的状态可能会发生变化.如果要实时查看这些更改(而不仅仅是在收到下一个事件时),则必须刷新()节点(或者您可以刷新()根并尝试获取节点的新副本从根)
当您刚刚获得子节点时,您不需要刷新它们(它们已经是新鲜的).您只需刷新之前获得的节点(在与它们或与其他节点进行某些交互之前).
| 归档时间: |
|
| 查看次数: |
1299 次 |
| 最近记录: |