安卓计时器继续休息

时间:2014-01-16 16:49:10

标签: java android android-service chronometer

我在我的应用程序中制作了一个计时器。但是当我在手机中关闭屏幕一段时间后,我会看看已经过了多少时间并且计时器再次为零。我如何修复它,以便它自己重置?

    if(v.getId() == R.id.start){
        int stopsecs = 0;

          String chronotime = time.getText().toString();
          String currenttime[] = chronotime.split(":");
          if (currenttime.length == 2) {
            stopsecs = Integer.parseInt(currenttime[0]) * 60 * 1000
               + Integer.parseInt(currenttime[1]) * 1000;
          } else if (currenttime.length == 3) {
            stopsecs = Integer.parseInt(currenttime[0]) * 60 * 60 * 1000 
                + Integer.parseInt(currenttime[1]) * 60 * 1000
                + Integer.parseInt(currenttime[2]) * 1000;
          }

          time.setBase(SystemClock.elapsedRealtime() - stopsecs);
          time.start();

    }
    else if(v.getId() == R.id.stop){
        time.stop();
        String updatedtime[] = time.getText().toString().split(":");
        StringBuilder b = new StringBuilder();
        if(updatedtime.length == 2){
            b.append("0");
            b.append(".");
            b.append(updatedtime[0]);
        }
        else if(updatedtime.length == 3){
            b.append(updatedtime[0]);
            b.append(".");
            b.append(updatedtime[1]);
        }
        horasch.setText(b.toString());

        time.setBase(SystemClock.elapsedRealtime());

    }
    else if(v.getId() == R.id.pause){
        time.stop();

    }

1 个答案:

答案 0 :(得分:0)

你没有说明time.start()和time.stop()的作用,但我认为它是某种计时器或线程。当您关闭屏幕或使用其他应用程序时,您的活动将暂停并受运行时杀死。所以当你返回它时,onCreate()会再次运行。

重写方法onSaveInstanceState()以在活动的活动生命周期结束时保存计时器的状态(例如,存储是否已启动/已停止,以及基准时间是否在SharedPreferences中)。因此,如果您的应用程序被终止,那么您将获得在重新启动时恢复其状态所需的信息。

重写onRestoreInstanceState()方法,以从存储在SharedPreferences中的数据恢复计时器的状态。请注意,仅当活动被系统杀死时才调用此方法,因为它最后一次可见并且在onCreate()之后运行。