Когда я звоню в Robotium:
solo.clickOnMenuItem("Sync");
иногда я получаю знаменитую ошибку:
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): android.view.WindowLeaked: активность test.com.activities.ListActivity утекло окно com.android.internal.policy.impl.PhoneWindow $ DecorView @ 461d4660, который был первоначально добавлен здесь
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.view.ViewRoot. (ViewRoot.java:253)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.view.WindowManagerImpl.addView (WindowManagerImpl.java:148)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.view.WindowManagerImpl.addView (WindowManagerImpl.java:91)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.view.Window $ LocalWindowManager.addView (Window.java:424)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.app.Dialog.show (Dialog.java:241)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): at test.com.activities.ListActivity $ Sincronizacao.onPreExecute (ListActivity.java:272)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.os.AsyncTask.execute (AsyncTask.java:391)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): at test.com.activities.ListActivity.onOptionsItemSelected (ListActivity.java:224)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.app.Activity.onOptionsItemSelected (Activity.java:2313)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.app.Activity.onMenuItemSelected (Activity.java:2201)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected (PhoneWindow.java:740)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): в com.android.internal.view.menu.MenuItemImpl.invoke (MenuItemImpl.java:143)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на com.android.internal.view.menu.MenuBuilder.performItemAction (MenuBuilder.java:855)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на com.android.internal.view.menu.IconMenuView.invokeItem (IconMenuView.java:538)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): в com.android.internal.view.menu.IconMenuItemView.performClick (IconMenuItemView.java:142)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.view.View $ PerformClick.run (View.java:8818)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.os.Handler.handleCallback (Handler.java:587)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.os.Handler.dispatchMessage (Handler.java:92)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.os.Looper.loop (Looper.java:143)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на android.app.ActivityThread.main (ActivityThread.java:4701)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): в java.lang.reflect.Method.invokeNative (собственный метод)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): в java.lang.reflect.Method.invoke (Method.java:521)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:860)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:618)
09-19 22: 27: 23.647: ОШИБКА / WindowManager (20662): в dalvik.system.NativeStart.main (собственный метод)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): java.lang.IllegalArgumentException: представление не прикреплено к оконному менеджеру
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.view.WindowManagerImpl.findViewLocked (WindowManagerImpl.java:355)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.view.WindowManagerImpl.removeView (WindowManagerImpl.java:200)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): в android.view.Window $ LocalWindowManager.removeView (Window.java:432)09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.app.Dialog.dismissDialog (Dialog.java:278)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.app.Dialog.access $ 000 (Dialog.java:71)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.app.Dialog $ 1.run (Dialog.java:111)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.app.Dialog.dismiss (Dialog.java:268)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.app.Dialog.cancel (Dialog.java:951)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): at test.com.activities.ListActivity $ Sincronizacao.onPostExecute (ListActivity.java:331)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.os.AsyncTask.finish (AsyncTask.java:417)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.os.AsyncTask.access $ 300 (AsyncTask.java:127)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.os.AsyncTask $ InternalHandler.handleMessage (AsyncTask.java:429)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.os.Handler.dispatchMessage (Handler.java:99)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.os.Looper.loop (Looper.java:143)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на android.app.ActivityThread.main (ActivityThread.java:4701)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на java.lang.reflect.Method.invokeNative (собственный метод)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): в java.lang.reflect.Method.invoke (Method.java:521)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:860)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:618)
09-19 22: 27: 24.209: ОШИБКА / AndroidRuntime (20662): в dalvik.system.NativeStart.main (собственный метод)
Но если я сделаю исходный вызов вот так (пункт меню третий):
mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_MENU);
mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_RIGHT);
mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_RIGHT);
mInstrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_ENTER);
Я не получаю никаких ошибок, независимо от того, сколько раз я запускаю тест. Почему я так поступаю?