0

このコードでは、

Log.d("MYLOG", "i_confirm in Activity BEFORE = "+Integer.toString(i_confirm)); // LINE 1
theGraph.invalidate();
i_confirm = theGraph.ret_i_confirm(); // LINE 2  

logcat は、1 行目と 2 行目の関数による出力を表示してから、クラスを拡張する のonDraw()関数内にある別の logcat メッセージを表示します。上記のコードは、コマンド ボタンが押されたときに実行される関数内の MainActivity クラスにあります。 theGraphView

invalidate()ノンブロッキングメソッドですか?onDraw()内部の他のすべてinvalidate()は、メイン プログラムの実行と一緒に呼び出されますか? または、logcat がログ メッセージを順不同で表示する可能性はありますか?

4

1 に答える 1

1

ブロッキングメソッドは、関数が戻るまで、現在実行中のスレッドをそれ以上の操作からブロックするメソッドです。したがって、ビューが複雑になる可能性があるmay take alot of time to redraw or update場合や、invalidate を呼び出す場合、Android OS では View.invalidate がシステムに (onDraw を介して) すぐにビューを再描画するように指示しますthe main thread goes idle。つまり、invalidate を呼び出すと、他の即時作業がすべて終了した後にビューが再描画されるようにスケジュールされます。

お役に立てれば

于 2013-09-17T10:26:48.013 に答える