为什么在以前的版本中的背景线程中操作UI时,为什么不例外



我们几年前发布了一个Android应用,并且在子线程中使用了一个View.setvisibility()方法。这些年来,直到Android O Developer Preview 4之前,一直没有问题。当我在Android O Developer Preview 4上测试我们的应用程序时,我在子线程中找到了view.setvisibility(),将抛出异常:

android.view.ViewRootimpl $ naterfromwrongthreadexception:只有创建视图层次结构的原始线程才能触摸其视图。

我已经将此方法移至主线程并解决了此问题。

,但我的问题是:

  1. 为什么在以前的版本中没有异常(即使在Android O开发人员预览1中也没有例外)?

  2. Android O的哪些变化导致了这个问题?我们应该向客户解释它,但我们找不到Android开发人员网站上的证据。

此异常是在以前的版本中抛出的。它只是从来没有可靠地抛出。无论如何,从背景线程访问UI元素总是错误的。您的代码不是安全的,并且可能总是表现出未报告的细微错误。您应该修复代码。

最新更新