SystemClock.uptimeMillis()中的变量集无法重置

时间:2018-03-02 07:16:01

标签: android runnable system-clock

请你原谅我是新开发者。

我在SystemClock.uptimeMillis内使用Runnable使其看起来像秒表。我从谷歌拿了秒表源代码。 之后我每30秒做一次修改(命名价格)会增加。

奇怪的是,当我重新开始秒表时,价格将不会恢复到初始值。我尝试重置onActivityResult中的价格值,但秒表显示随机数。 如何使价格变量返回初始值?

以下是我的代码:

Handler handler = new Handler();
long startTime = 0L, timeinMilliseconds=0L,timeSwapBuff=0L, updateTime=0L;

int pressCounter = 0;

int price = 3000;

Runnable updateTimerThread = new Runnable() {
    @SuppressLint({"DefaultLocale", "SetTextI18n"})
    @Override
    public void run() {
        timeinMilliseconds = SystemClock.uptimeMillis()-startTime;
        updateTime = timeSwapBuff+timeinMilliseconds;
        int secs = (int)(updateTime/1000);
        int mins = secs/60;
        int hours = mins/60;

        secs%=60;
        int milliseconds = (int)(updateTime%1000);
        tv_timer.setText(String.format("%2d",hours)+":"+String.format("%2d",mins)+":"+String.format("%2d",secs)+":"
                +String.format("%3d",milliseconds));
        if (secs % 30 == 0){
            price++;
            tv_biaya.setText("Rp. "+price+",00");
        }
        handler.postDelayed(this,0);
    }
};

当按钮单击该方法时会触发此代码

startTime = SystemClock.uptimeMillis();
handler.postDelayed(updateTimerThread,0);

1 个答案:

答案 0 :(得分:0)

似乎价格仍在上涨,因为价格%30 == 0"逻辑。我的错。当秒表时,秒转0,%30也为0.因此,它不会达到初始值。 我已经改变了逻辑,我为价格制作了新的Runnable