我正在做一些黑盒测试(顺便说一句,使用 UiAutomator 2.0,扩展 InstrumentationTestCase),我需要知道:
1 - 创建新 Activity 时
2 - 了解是否是第一次创建 Activity
我需要这个,因为当出现新 Activity 时我想应用一些测试,但我希望此检测是自动的,而不是手动的。
在 Android L 之前,存在 UiDevice.getCurrentActivityName() 方法。然而,现在它已被弃用(此外,他们甚至不确保它适用于以前的版本)。通过 PackageManager 获取 Activity 的选项也会发生这种情况。
因此,我想知道:
是否可以通过编程方式检测新 Activity ?如果是这样,就可以知道该 Activity 是否是第一次发生。
如果不可能,我应该如何根据 Activity 的 UI 定义它?我应该更改多少个小部件才能断定这是不同的 Activity ?
谢谢。
编辑:需要明确的是,我不想测试创建 Activity 时会发生什么,我希望能够确定这是否是此 Activity 在运行中第一次发生.
最佳答案
这是我目前针对此问题实现的方法,基于相同的 Activity 不会动态更改其 UI View 层次结构的假设。这对我来说没问题,似乎我只想区分 UI 更改,而不是 Activity 所必需的。
1.构建屏幕间识别签名
signature1:FrameLayout;ListView;LinearLayout;RelativeLayout;...
signature2:FrameLayout;FrameLayout;FrameLayout;LinearLayout;...
2.然后,使用列表来保留您已知的屏幕。
3.为了性能,您可以使用固定长度的屏幕签名。
思路引用这个paper
如果 adb 适合你,你可以使用这个命令,
adb shell dumpsys activity
这引用了另一篇文章here
关于android - 如何判断是否出现了新的 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30646827/