2011-12-14 103 views
1

我寫了一個腳本來模擬用戶操作。例如,工作流程首先點擊一個圖標,啓動一項活動。然後執行其他操作。 問題是,我不知道活動完全啓動的確切時間。目前,我使用sleep來使我的腳本等待。 有什麼方法可以知道活動何時完成?有什麼方法可以知道活動何時完成?

+1

這取決於您是否擁有控制權?所以你可以在其中編寫代碼?你從哪裏運行腳本? – 2011-12-14 13:44:21

回答

-1

是您的最終任務是活動啓動後運行的東西......做到這一點從活動稱爲

第一種方法是onCreate(),因此,我們可以說,在完成onCreate()系統調用onStart()它調用onResume()方法...作爲onResume()完成,你可以說你的活動是正確的推出...

如果你不打算覆蓋onStart()onResume()我所要描述可以寫成的onCreate()最後陳述。當我不需要onStart()onResume()時,我通常會這樣做。

您可以創建一個對象Handler。像

Handler handler = new Handler();

處理程序有一個方法postDelayed()這就是所謂的創建經過一些時間和啓動完成。

這樣稱呼它

handler.postDelayed(runnable,timeInMilliSeconds);

畢竟該過程後,應用程序將等待timeInMilliSeconds毫秒開始在postDelayed提供runnablerun方法定義的過程.....

因此,

如果您的任務是要知道何時啓動完成答案是:在結束時從你的onStart()調用....

如果你想執行一些行動使用handler.PostDelayed()方法並保持timeInMilliSeconds非常低... [1至10]之間。

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. 
    } 
}); 
相關問題