gpt4 book ai didi

android 秒表在屏幕关闭时停止工作

转载 作者:行者123 更新时间:2023-11-29 17:05:22 25 4
gpt4 key购买 nike

您好,我最近制作了一个简单的秒表应用程序,它运行良好。但是,当我切换屏幕并将其重新打开时,计时器会显示最后一个时间值。例如,如果计时器显示 00:00:10 ,将屏幕(5 秒)重新打开,它会显示相同的值并开始增加时间值。

有什么建议吗?

谢谢

      if (savedInstanceState != null) {
seconds = savedInstanceState.getInt("seconds");
running = savedInstanceState.getBoolean("running");
wasRunning = savedInstanceState.getBoolean("wasRunning");
}

runTimer();
}


public void onClickStart(View view){
running = true;
}

public void onClickStop(View view){
running = false;
}

public void onClickReset(View view){
running = false;
seconds = 0;
}


@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putInt("seconds", seconds);
savedInstanceState.putBoolean("running", running);
savedInstanceState.putBoolean("wasRunning",wasRunning);
}


@Override
protected void onPause(){
super.onPause();
wasRunning = running;
running = false;
}

@Override
protected void onResume(){
super.onResume();
if(wasRunning){
running = true;
}
}

@Override
protected void onStop(){
super.onStop();
wasRunning = running;
running = false;
}

@Override
protected void onStart(){
super.onStart();
if(wasRunning){
running = true;
}
}

private void runTimer(){
final TextView timeView = (TextView)findViewById(R.id.time_view);
final Handler handler = new Handler();

handler.post(new Runnable() {
@Override
public void run() {

int hours = seconds/3600;
int minutes = (seconds%3600)/60;
int secs = seconds%60;

String time = String.format("%d:%02d:%02d",hours,minutes,secs);
timeView.setText(time);

if(running){
seconds++;
}
handler.postDelayed(this,1000);
}
});

}

最佳答案

@Override
protected void onPause(){
super.onPause();
wasRunning = running;
running = false;
}

@Override
protected void onResume(){
super.onResume();
if(wasRunning){
running = true;
}
}

@Override
protected void onStop(){
super.onStop();
wasRunning = running;
running = false;
}

@Override
protected void onStart(){
super.onStart();
if(wasRunning){
running = true;
}
}

只需查看您的代码,您正在更改 running 的值至 false每当你的 Activity PausesStops .并查看计时器,它只会在 running 时增加值是true .

关于android 秒表在屏幕关闭时停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41935150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com