有什么方法可以知道活动何时完全启动?

时间:2011-12-14 13:37:19

标签: android android-activity

我写了一个脚本来模拟用户操作。例如,工作流程首先点击图标,启动活动。然后做其他动作。 问题是,我不知道活动完全启动的确切时间。目前,我使用sleep让我的脚本等待。 有没有办法知道活动何时完全启动?

2 个答案:

答案 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之间]。