開発者向けオプションですべてのアニメーションをオフにしました。しかし、ボタンの1つをクリックしようとすると、この例外が発生します。
私のアプリは確かにアクティブで、完全にアイドル状態ではありませんが、変更することはできません。
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)
私は過去数日間、この問題に取り組んできました。
ここに私が「違反者」を識別するために使用した方法があります:
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);
}
}
}
私の場合、Facebook SDKはAsyncTaskスレッドプールを使用していました。
答え による MaciejGórski による同様の質問:
これは私のアプリコードのバグで、
SwipeRefreshLayout
が無期限に自分自身をアニメーション化しました。 このコンポーネントのバグ が原因で、更新状態が表示されませんでした。
あなたはこの方法をチェックすることができます:
方法1:開発者向けオプションでアニメーションを無効にします。
Setting -> developer options -> Window animation scale -> off
Transition animation scale -> off
Animator duration scale -> off
方法2: build.gradleにcustomViewがある場合は、これを使用します
defaultConfig {
//...
testOptions {
animationsDisabled = true
}
}