在Lollipop(Android 21)中使用Espresso是否有解决方法?

6
尝试在Nexus 7上使用espresso运行UI相关代码的测试(即GoogleInstrumentationTestRunner),会出现以下错误:java.lang.IllegalStateException: This message cannot be recycled because it is still in use. at android.os.Message.recycle(Message.java:279) at com.google.android.apps.common.testing.ui.espresso.base.UiControllerImpl.loopUntil(UiControllerImpl.java:468) at com.google.android.apps.common.testing.ui.espresso.base.UiControllerImpl.loopMainThreadUntilIdle(UiControllerImpl.java:337) at com.google.android.apps.common.testing.ui.espresso.ViewInteraction$1.run(ViewInteraction.java:94) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
这似乎是一个已知的问题数个月了,但由于自1月8日以来没有提交, 所以不知道是否会有官方修复。
在讨论线程中有一条评论指出:

只需删除 message.recycle(); 似乎就可以解决了...

这是一个有效的解决方法吗?如果不是,正确的修复方法是什么?
1个回答

5

更新:使用Espresso 2.0来支持Lollipop操作系统。请访问https://code.google.com/p/android-test-kit/wiki/EspressoSetupInstructions了解更多。

是的,如果你移除“message.recycle();”并重新编译,它将解决这个问题。

Espresso团队在GTAC上宣布,下一个版本的Espresso不久将在AOSP中发布。请查看https://www.youtube.com/watch?v=aHcmsK9jfGU视频了解详情。

(我是你所提到的那个问题的原始发布者)

更新:

// you will want to keep it for older API versions
if ( SDK_INT < 21 ){
    message.recycle();
}


谢谢!很高兴您能重新访问7月1日的帖子并找到答案。 - Jedidja
感谢您也发布了那个视频的链接。 - Jedidja
嘿,我卡住了,你的答案似乎能解决我的问题。 我需要从哪个类中删除recycle()方法? - Patrick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接