У меня есть приложение с длительным действием. Я использую AsyncTask. В его onPostExecute () я вызываю функцию, которая модифицирует некоторые представления. Я получаю эту ошибку при вызове setEnabled на 5-м представлении 10 изменяемых представлений И это случается очень редко, получая странные сообщения об ошибках от пользователей.
Очевидно, проблема многопоточности. Но я думал, onPostExecute () всегда работает в потоке пользовательского интерфейса? Может ли быть так, что поток пользовательского интерфейса внезапно изменяется на другой поток ??
Трассировка стека:
сгенерировал следующее исключение:
android.view.ViewRoot $ CalledFromWrongThreadException: только оригинал
поток, создавший иерархию представлений, может касаться его представлений.
--------- Трассировка стека инструкций ---------
- android.view.ViewRoot.checkThread (ViewRoot.java:3041)
- android.view.ViewRoot.invalidateChild (ViewRoot.java:647)
- android.view.ViewRoot.invalidateChildInParent (ViewRoot.java:673)
- android.view.ViewGroup.invalidateChild (ViewGroup.java:2511)
- android.view.View.invalidate (View.java:5255)
- android.graphics.drawable.Drawable.invalidateSelf (Drawable.java:300)
8.
android.graphics.drawable.DrawableContainer.selectDrawable (DrawableContainer.java:227)
9.
android.graphics.drawable.StateListDrawable.onStateChange (StateListDrawable.java:99)
- android.graphics.drawable.Drawable.setState (Drawable.java:400)
- android.view.View.drawableStateChanged (View.java:7374)
- android.view.ViewGroup.drawableStateChanged (ViewGroup.java:3357)
- android.widget.FrameLayout.drawableStateChanged (FrameLayout.java:164)
- android.view.View.refreshDrawableState (View.java:7388)
- android.view.View.setEnabled (View.java:3147)
- com.voltup.powermax.ac.a (ActivityAppUiProxy.java:383)
- com.voltup.powermax.cp.onPostExecute (ModeChange.java:1)
- android.os.AsyncTask.finish (AsyncTask.java:417)