私はそれ自身でいくつかのビューを含むカスタムビューを持っています。このコンテナビュー内のビューの1つがクリックされると、コンテナビュー内のTextViewも毎秒更新する必要がある「タイマー」スレッドが実行されるようにしました。私の問題は毎秒TextViewを更新したいときに発生します。明らかに、私が思ったほど簡単ではなかった。私はそうのような私のコンテナビュー内のRunnableを実装し、そしてボタンがタイマーを開始するためにクリックされたとき、スレッドを実行:ビューからUIスレッドで実行
public void run() {
while(runnning) {
// if one second has passed, update the Textview
}
}
私は基本的にそれはです意味典型的なことはできない - タッチビュー・外階層の例外を取得しますUIスレッドでは実行されません。ここではpost(Runnable)
を使いたくないので、スレッドの最後まで1秒間更新する必要はないからです。また、アクティビティ全体をrunOnUiThread(Runnable)
に渡すことは実際的ではありません。だから、誰かが私がこれをやってどうやって行くのか教えてもらえますか誰かが明確化を必要とするなら、私に教えてください!
ありがとう、私はAsyncTasksでそれを理解した! – Brian