嗨,我最近做了一個簡單的秒錶應用程序,它工作正常。但是,當我切換屏幕並將其打開時,計時器會顯示最後一次的時間值。例如,如果定時器顯示給我00:00:10,則將(5秒鐘)的屏幕重新打開並顯示相同的值,並開始增加時間值。當屏幕關閉時,android stopwatch停止工作
任何建議爲什麼?
感謝
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);
}
});
}
好,那麼糾正我,如果我錯了,爲了保持秒錶運行,而屏幕是或應用程序在後臺我需要刪除這些方法? – MariusBrave
是的,你必須。但嘗試使用'服務'.https://developer.android.com/guide/components/services.html –
謝謝生病檢查出 – MariusBrave