我写了一个脚本来模拟用户操作。例如,工作流程首先点击图标,启动活动。然后做其他动作。
问题是,我不知道活动完全启动的确切时间。目前,我使用sleep
让我的脚本等待。
有没有办法知道活动何时完全启动?
答案 0 :(得分:0)
我不知道活动开始时你想做什么。但通常每个人的要求是找到视图的宽度或与UI有关的事情。问题是,在绘制UI之前调用onCreate,因此可以在此处完成与涉及测量的UI无关。为此,我们可以使用全局布局侦听器。
ViewTreeObserver vto = outerLayout.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
outerLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
//This is executed once the layout is drawn. AFAIK this is as close as it gets
to when the activity is started.
}
});
答案 1 :(得分:-1)
你的最后一项任务是在活动启动后运行一些东西......执行此操作
从活动调用的第一个方法是onCreate()
,因此我们可以说完成调用onCreate()
方法的onStart()
系统调用onResume()
... onResume()
完成后你可以说你的活动正确启动......
如果您不打算覆盖onStart()
或onResume()
我将要描述的内容可以写为onCreate()
的最后陈述。当我不需要onStart()
或onResume()
时,我通常会这样做。
您可以创建Handler
的对象。像
Handler handler = new Handler();
处理程序有一个方法postDelayed()
,在创建和启动完成后会调用一些方法。
称之为
handler.postDelayed(runnable,timeInMilliSeconds);
在所有流程完成后,应用程序将等待timeInMilliSeconds
ms启动run
中提供的runnable
postDelayed
方法中定义的流程。 / p>
因此
如果您的任务是知道启动何时结束,答案是:onResume()
从您的onStart()
调用...
如果您想使用handler.PostDelayed()
方法执行某些操作,请将timeInMilliSeconds
设置得非常低...... [介于1到10之间]。