2012-03-15 16 views
3

私のアプリケーションでScrollViewクラスを使用します。私は、コンパスからキャンバスにいくつかのデータを描画します。これらのデータは、ユーザーの相互作用によって定期的に更新されます。定期的にonDrawを呼び出す方法は?

ユーザーがディスプレイに触れることなく、定期的にonDrawメソッドを呼び出す方法はありますか?他のスレッドを使わずにキャンバスのコンテンツを定期的に更新してview.postInvalidate()を呼び出すことはできますか?

+1

なぜこれを行うには別のスレッドを使用したくないですか? – DRiFTy

+0

他にもあると思います。別の方法がない場合、私はスレッドを使用します... – misco

+0

私はこの事が起こるのを見ることができる唯一の方法はスレッドであり、以下のDeeVによる答えはあなたがすべきことです。ハンドラでは、独自のスレッドからUIスレッドにコールすることができます。 – DRiFTy

答えて

8

Handlerクラスは、このような場合に非常に便利です。

Handler viewHandler = new Handler(); 
Runnable updateView = new Runnable(){ 
    @Override 
    public void run(){ 
    globalView.invalidate(); 
    viewHandler.postDelayed(updateView, MILLISECONDS_TILL_UPDATE); 
    } 
}; 

どこでもUIスレッドでコールviewHandler.post(updateView);、それは無限にRunnableことMILLISECONDS_TILL_UPDATEに指定されたミリ秒のすべてのX番号を呼び出します。終了するにはviewHandler.removeCallbacks(updateView);に電話するか、別の投稿を防ぐためにブール値フラグを使用してください。

関連する問題