2017-09-06 1 views
0

Wir haben vor einigen Jahren eine Android-APP veröffentlicht, und es gibt eine View.setVisibility() -Methode, die in einem Unter-Thread verwendet wird. Es war in diesen Jahren kein Problem, bis Android O Developer Preview 4. Wenn ich unsere App auf Android-O Developer Preview testen 4, I View.setVisibility() in einem Unterfaden gefunden wird eine Ausnahme aus, wie folgt:Warum wird keine Ausnahme ausgelöst, wenn die Benutzeroberfläche in einem Hintergrundthread in früheren Versionen betrieben wird?

android.view.ViewRootImpl $ CalledFromWrongThreadException: Nur der ursprüngliche Thread, der eine Ansichtshierarchie erstellt hat, kann seine Ansichten berühren.

Ich habe diese Methode in den Haupt-Thread verschoben und dieses Problem behoben.

Aber meine Fragen sind:

  1. Warum keine Ausnahme in früheren Versionen (auch keine Ausnahme in Android O Developer Preview 1) geworfen wird?

  2. Welche Änderung in Android O führt zu diesem Problem? Wir sollten es unseren Kunden erklären, aber wir können den Beweis auf der Website des Android-Entwicklers nicht finden.

Antwort

2

Diese Ausnahme was thrown in previous versions. Es ist einfach nie geworfen worden. Trotzdem war es immer falsch, auf UI-Elemente von einem Hintergrund-Thread zuzugreifen. Ihr Code ist nicht Thread-sicher, und es ist möglich, dass er immer subtile Fehler aufweist, die nicht gemeldet wurden. Sie sollten Ihren Code reparieren.

Verwandte Themen