SystemClock.uptimeMillis() 中设置的变量无法重置
Variable set in SystemClock.uptimeMillis() can't be reset
对不起,我是新开发人员。
我在 Runnable
中使用 SystemClock.uptimeMillis
使其看起来像秒表。我从 google 获取秒表源代码。
之后我每 30 秒修改一个变量(命名价格)将增加。
奇怪的是,当我重新启动秒表时,价格不会 return 到初始值。我已尝试重置 onActivityResult
中的价格值,但秒表显示的是随机数字。 如何让价格变量return为初始值?
这是我的代码:
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);
由于"price % 30 == 0"逻辑,价格似乎还在上涨。我的错。当秒表的秒数变为 0 时,%30 也为 0。因此,它不会进入初始值。
我改变了逻辑,我为价格做了一个新的 Runnable
。
对不起,我是新开发人员。
我在 Runnable
中使用 SystemClock.uptimeMillis
使其看起来像秒表。我从 google 获取秒表源代码。
之后我每 30 秒修改一个变量(命名价格)将增加。
奇怪的是,当我重新启动秒表时,价格不会 return 到初始值。我已尝试重置 onActivityResult
中的价格值,但秒表显示的是随机数字。 如何让价格变量return为初始值?
这是我的代码:
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);
由于"price % 30 == 0"逻辑,价格似乎还在上涨。我的错。当秒表的秒数变为 0 时,%30 也为 0。因此,它不会进入初始值。
我改变了逻辑,我为价格做了一个新的 Runnable
。