私はタイマーの使い方を学んでおり、http://examples.javacodegeeks.com/android/core/os/handler/android-timer-example/の例に従っています。
ユーザーがボタンを押したときにタイマーが開始し、ユーザーの手が離されたときにタイマーが停止するように実装したいので、次のようにコーディングしました。
コード:
button_right.setOnTouchListener( new View.OnTouchListener()
{
@Override
public boolean onTouch(View arg0, MotionEvent event)
{
if(event.getAction()==MotionEvent.ACTION_DOWN )
{
startTime = SystemClock.uptimeMillis();
customHandler.postDelayed(updateTimerThread, 0);
if((event.getAction()==MotionEvent.ACTION_UP || event.getAction()==MotionEvent.ACTION_CANCEL))
{
timeSwapBuff += timeInMilliseconds;
customHandler.removeCallbacks(updateTimerThread);
}
return false;
}
});
// setting timer
private Runnable updateTimerThread = new Runnable()
{
public void run()
{
timeInMilliseconds = SystemClock.uptimeMillis() - startTime;
updatedTime = timeSwapBuff + timeInMilliseconds;
int secs = (int) (updatedTime / 1000);
int mins = secs / 60;
secs = secs % 60;
int milliseconds = (int) (updatedTime % 1000);
tv_timing.setText("" + mins + ":" + String.format("%02d", secs) + ":" + String.format("%03d", milliseconds));
customHandler.postDelayed(this, 0);
}
};
質問:
すべてが正常に機能し、ユーザーがボタンを押すとタイマーが開始され、保持すると実行され続け、手を離すと停止します。それでも、ユーザーがボタンをもう一度押すと、タイマーは、時間をカウントする前に 0 にリセットするのではなく、前回停止した場所から開始することがわかりました。
このコードを使用する場合、タイマーが 0 にリセットされ、ボタンが再度押されたときにもう一度カウントされるように変更するにはどうすればよいでしょうか? ありがとう!!