0

ユーザーがタスクを完了するのにかかる時間をカウントするタイマーが必要です。stackoverflow に関する他の質問から、次のアプローチを考案しました (以下のコードを参照)。私の質問 - >これを行うより効率的な方法はありますか? ちょっと面倒そうです。

    private Timer myTimer;
private SharedPreferences prefs;
private String prefName = "MyPref";
private static final String TIMER_KEY = "timer";
private static final String FINAL_TIMER_KEY = "final timer";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.crossword1);

    //Start the timer ticking
    myTimer = new Timer();
    myTimer.schedule(new TimerTask() {          
        @Override
        public void run() {
            TimerMethod();
        }

    }, 0, 1000);
}

       private void TimerMethod()
{
    this.runOnUiThread(Timer_Tick);
}

   private Runnable Timer_Tick = new Runnable() {
    public void run() {

        //here i plan on using a shared preference to keep track of the time
        //so each "Timer_Tick" would get the latest "TIMER_KEY", add a second to it 
        //and then re-store it in the shared preferences

    }
};
4

1 に答える 1

1

次のコードを使用すると、時刻をテキスト ビューおよび背景として出力できます。

private Long startTime;
private Handler handler = new Handler();  
startTime = System.currentTimeMillis();

handler.removeCallbacks(updateTimer);
handler.postDelayed(updateTimer, 1000);

private Runnable updateTimer = new Runnable() {
    public void run() {
        final TextView time = (TextView) findViewById(R.id.timer);
        Long spentTime = System.currentTimeMillis() - startTime;
        //計算目前已過分鐘數
        Long minius = (spentTime/1000)/60;
        //計算目前已過秒數
        Long seconds = (spentTime/1000) % 60;
        time.setText(minius+":"+seconds);
        handler.postDelayed(this, 1000);
    }
};
于 2012-12-20T13:11:49.797 に答える