これが私が通常行う方法です。
Handler を拡張し、リフレッシュ ステータスを簡単に制御できるカスタム メソッドを追加します。
また、リフレッシュ期間を簡単かつ動的に制御することもできます。
public class ProgressHandler extends Handler {
private static final int START = 0;
private static final int STOP = 1;
private static final int REFRESH = 2;
public void start() {
removeMessages( STOP );
sendEmptyMessage( START );
}
public void stop() {
removeMessages( START );
removeMessages( STOP );
}
@Override
public void handleMessage(Message msg) {
super.handleMessage( msg );
switch (msg.what) {
case REFRESH:
mProgress.setProgress(mProgressStatus);
if( mProgressStatus < 100 )
sendEmptyMessageDelayed( REFRESH, 100 /* Or how much you need */ );
break;
case START:
sendEmptyMessage( REFRESH );
break;
case STOP:
removeMessages( REFRESH );
break;
default:
break;
}
}
};
これは最良の方法の 1 つだと思います。Timerを使用するよりもさらに優れているため、動作をもう少しカスタマイズできます。