杀死app后计数器重新启动

时间:2015-01-13 17:29:38

标签: java android save counter chronometer

当我按住按钮时,我已经创建了一个启动计数器的应用程序,并在我释放按钮后立即停止计数,然后在我再次触摸它时再次启动...(该应用程序可以查看多长时间我可以使用的时间,触摸按钮。)

无论如何,我已经设法保存了计数器的数据,所以当我杀死应用程序或按下"后退按钮"时,计数器的数据会保存。但是只要再次点击按钮,它就会重新启动!我无法找到解决此问题的方法。我认为它必须做一些事情:

chromo.setBase(SystemClock.elapsedRealtime()+time);

(发现在" ACTION_DOWN")顺便提一下,我使用天文台作为我的计数器。请帮帮我!

这是我的代码:

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;
            }
    });
}}

0 个答案:

没有答案