你怎么知道一个Android活动何时完成加载?

我正在为我们的android应用程序的自动化testing套件工作,并遇到麻烦,等待完全加载的活动。 我可以调用getActivity,但仅仅是因为它显示了我希望在我的testing中看到的活动似乎并不总是意味着活动的组件已准备好使用(完全加载)。 通过Activity API查看并没有发现任何东西,其他方法似乎太过侵入性,并且破坏了testing的初始状态。 有谁知道是否有方法来问应用程序或虚拟机,如果当前的活动加载?

Solutions Collecting From Web of "你怎么知道一个Android活动何时完成加载?"

正如我在评论中提到的 ,在onCreate()早期调用setContentView()之后,您的视图层次结构应该可以工作。 我从来没有像任何活动或testing类这样的问题..

我不确定这对于这个特定情况是否有帮助,但通常你可以通过调用getInstrumentation().waitForIdleSync()来确定UI事件队列何时为空。 这将阻塞,直到没有更多的UI事件处理。

如果您在testing用例中创build一个像这样的setUp()方法,可以将ActivityInstrumentationTestCase2<MyActivity>

 @Override protected void setUp() throws Exception { super.setUp(); final MyActivity activity = getActivity(); tv1 = (EditNumber)activity.findViewById(resId1); tv2 = (EditNumber)activity.findViewById(resId2); } 

您的活动将充分运作和布局加载,在这种情况下展示的事实,你可以访问视图及其内容

 @SmallTest public void testSimpleCreate() { final MyActivity activity = getActivity(); assertNotNull(activity); assertNotNull(tv1); assertEquals("mystr1", tv1.getText().toString()); assertNotNull(tv1); assertEquals("mystr2", tv2.getText().toString()); } 

可能有一个更优雅的方式,但你是否尝试在OnCreate()方法的结尾设置一个布尔值?