2017-09-06 32 views
0

几年前我们发布了一个android应用程序,并且在子线程中使用了View.setVisibility()方法。 这些年来一直没有问题,直到Android O Developer Preview 4. 当我在Android O Developer Preview 4上测试我们的APP时,发现子线程中的View.setVisibility()会抛出一个异常,如下所示:为什么在以前版本的后台线程中操作UI时不会引发异常?

android.view.ViewRootImpl $ CalledFromWrongThreadException:只有创建视图层次结构的原始线程可以触及其视图。

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

但我的问题是:

  1. 为什么也不例外在以前的版本(Android中O开发者预览版,甚至没有任何的异常)?

  2. Android O中的哪些变化导致此问题?我们应该向我们的客户解释,但我们无法在Android开发人员的网站上找到证据。

回答

2

本例外was thrown in previous versions。这是从来没有被抛出可靠。无论如何,从后台线程访问UI元素总是错误的。你的代码不是线程安全的,它可能总是展现出未被报告的微妙的错误。你应该修复你的代码。

相关问题