web-dev-qa-db-fra.com

Erreur de test Espresso: AppNotIdleException

J'ai désactivé toutes les animations sur les options de développeur . Mais cette exception persiste quand je tente de cliquer sur l'un des boutons.

Mon application est en effet active et pas totalement inactive, mais je ne peux pas la changer.

Android.support.test.espresso.AppNotIdleException: Looped for 6930
iterations over 60 SECONDS. The following Idle Conditions failed .
 at dalvik.system.VMStack.getThreadStackTrace(Native Method)
 at Java.lang.Thread.getStackTrace(Thread.Java:580)
 at Android.support.test.espresso.base.DefaultFailureHandler.getUserFriendlyError(DefaultFailureHandler.Java:92)
 at Android.support.test.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.Java:56)
 at Android.support.test.espresso.ViewInteraction.runSynchronouslyOnUiThread(ViewInteraction.Java:184)
 at Android.support.test.espresso.ViewInteraction.doPerform(ViewInteraction.Java:115)
 at Android.support.test.espresso.ViewInteraction.perform(ViewInteraction.Java:87)
18
user5174803

Je me bats avec ce problème depuis quelques jours.
Voici une méthode que j’ai utilisée pour identifier les "contrevenants":

private void dumpThreads() {
    int activeCount = Thread.activeCount();
    Thread[] threads = new Thread[activeCount];
    Thread.enumerate(threads);
    for (Thread thread : threads) {
        System.err.println(thread.getName() + ": " + thread.getState());
        for (StackTraceElement stackTraceElement : thread.getStackTrace()) {
            System.err.println("\t" + stackTraceElement);
        }
    }
}

Dans mon cas, le SDK de Facebook utilisait le pool de threads AsyncTask.

3
deadmoto

Selon réponse de MaciejGórski à la même question:

C'était un bug dans mon code d'application, où SwipeRefreshLayout animait lui-même indéfiniment. En raison de un bug dans ce composant , l'état d'actualisation n'était même pas affiché.

1
W4R10CK