我正在尝试使用ADB获取整个屏幕的层次结构。
如果我使用adb shell uiautomator dump,则只会得到当前视图,而不是整个屏幕。例如,如果我转储当前视图,然后向下滚动并再次转储,则将获得不同的输出。我想转储整个屏幕,而不必向下滚动并再次转储。
答案 0 :(得分:0)
如果我使用的是gmail应用程序,则在我的收件箱中,我会列出当前正在查看的电子邮件列表。转储只会给我那封电子邮件列表,我想知道是否有一种方法可以在收件箱中获取所有电子邮件。
通常,不会。
以您的Gmail示例为例,假设Gmail应用程序以某些标签显示了对话,并且该标签包含343,140,189个对话。
(垃圾邮件,无土粉石?)
我猜您认为Gmail应用程序的UI包含一个滚动列表,其中包含343,140,189行,而滚动只是更改了可见的343,140,189行中的一个。
并非如此,原因有很多,例如应用程序内存不足。
Android中的大多数滚动列表都使用RecyclerView
和ListView
之类的类。这些类回收其行。因此,除了343,140,189行以外,将只有很少的行足以填满整个屏幕,也许还有更多行。当用户滚动并从屏幕上滚动出行时,它们将被回收:填充新内容并作为“新”行输入。从视觉上看,效果与343,140,189行没有区别。从编程的角度来看,差异是巨大的。从uiautomator
的角度来看,编程才是最重要的。