Java 终止应用程序后计数器重新启动

Java 终止应用程序后计数器重新启动,java,android,save,counter,chronometer,Java,Android,Save,Counter,Chronometer,我制作了一个应用程序,当我按住按钮时启动计数器,松开按钮后停止计数,然后再次触摸后重新启动。。(该应用程序是用来查看我可以使用多长时间,只需触摸一个按钮。) 无论如何,我已经做了一个方法来保存计数器的数据,所以当我关闭应用程序或按下“后退”按钮时,计数器的数据会保存。但只要我再次点击按钮,它就会重新启动!我找不到办法解决这个问题。我认为这与: chromo.setBase(SystemClock.elapsedRealtime()+时间) (在“下一步行动”中找到)顺便说一句,我用了计时器作为计

我制作了一个应用程序,当我按住按钮时启动计数器,松开按钮后停止计数,然后再次触摸后重新启动。。(该应用程序是用来查看我可以使用多长时间,只需触摸一个按钮。)

无论如何,我已经做了一个方法来保存计数器的数据,所以当我关闭应用程序或按下“后退”按钮时,计数器的数据会保存。但只要我再次点击按钮,它就会重新启动!我找不到办法解决这个问题。我认为这与:

chromo.setBase(SystemClock.elapsedRealtime()+时间)

(在“下一步行动”中找到)顺便说一句,我用了计时器作为计数器。请帮帮我

这是我的密码:

public class MainActivity extends ActionBarActivity {

Button button1;
Chronometer chromo;
protected long time = 0;
private SharedPreferences prefs;




 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button1=(Button)findViewById(R.id.button1);
        chromo=(Chronometer)findViewById(R.id.chromo);
        prefs = getSharedPreferences("prefs", Context.MODE_PRIVATE);
        long savedValue = prefs.getLong("my_chrono", 0);

        if(savedValue == 0)
            chromo.setBase(SystemClock.elapsedRealtime());
        else
            chromo.setBase(SystemClock.elapsedRealtime() + savedValue);

        button1.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                if(event.getAction() == MotionEvent.ACTION_DOWN){
                    chromo.setBase(SystemClock.elapsedRealtime()+time);
                    chromo.start();
                }
                else if( event.getAction() == MotionEvent.ACTION_UP){
                    time =chromo.getBase()-SystemClock.elapsedRealtime();
                    chromo.stop();
                    prefs.edit().putLong("my_chrono", time).apply();
                }
                return true;
            }
    });
}}

你想添加
time=saveValue
s而旁注,
如果(savedValue==0)
没有用,你只能使用
SystemClock.elapsedRealtime()+savedValue
MAN谢谢!!我成功了!!谢谢,真的@njzk2