私はとを持っていObservable
ますObserver
。オブザーバブルはバックグラウンドスレッドにいくつかのものをダウンロードしnotifyObservers
、オブザーバーにステータスを読み取らせるように呼び出します。
オブザーバーのある時点でpublic void update
、GUIを更新しようとします
((TextView)findViewById('R.id.foo')).setText("bar");
しかし、Observable(!!!)がこれをスローするため、observableスレッドがこのメソッドを呼び出すようです。
android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRoot.checkThread(ViewRoot.java:2462)
at android.view.ViewRoot.requestLayout(ViewRoot.java:512)
...
at com.mynamespace.acitivty.TrackActivity.startPlay(TrackActivity.java:72)
at com.mynamespace.acitivty.TrackActivity.update(TrackActivity.java:107)
at java.util.Observable.notifyObservers(Observable.java:147)
at java.util.Observable.notifyObservers(Observable.java:128)
at com.mynamespace.module.communication.Download.stateChanged(Download.java:213)
at com.mynamespace.module.communication.Download.run(Download.java:186)
at java.lang.Thread.run(Thread.java:1058)
これを防ぐ方法はありますか?私はここで明白な何かを見逃していると確信しています。