我们几年前发布了一个Android应用,并且在子线程中使用了一个View.setvisibility()方法。这些年来,直到Android O Developer Preview 4之前,一直没有问题。当我在Android O Developer Preview 4上测试我们的应用程序时,我在子线程中找到了view.setvisibility(),将抛出异常:
:android.view.ViewRootimpl $ naterfromwrongthreadexception:只有创建视图层次结构的原始线程才能触摸其视图。
我已经将此方法移至主线程并解决了此问题。
,但我的问题是:
为什么在以前的版本中没有异常(即使在Android O开发人员预览1中也没有例外)?
Android O的哪些变化导致了这个问题?我们应该向客户解释它,但我们找不到Android开发人员网站上的证据。
此异常是在以前的版本中抛出的。它只是从来没有可靠地抛出。无论如何,从背景线程访问UI元素总是错误的。您的代码不是安全的,并且可能总是表现出未报告的细微错误。您应该修复代码。