Saving data in application

后端 未结 4 1931
梦如初夏
梦如初夏 2021-01-24 00:14

I have made an application. It\'s a button that shows the time you have pressed it. Every time I \"kill\" the application, the timer starts at 0 again (naturally). How can I mak

4条回答
  •  天命终不由人
    2021-01-24 00:27

    EDIT :

    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.start();
                    }
                    else if( event.getAction() == MotionEvent.ACTION_UP){
                        time =chromo.getBase()-SystemClock.elapsedRealtime();
                        chromo.stop();
                        prefs.edit().putLong("my_chrono", time).apply();
                    }
                    return true;
                }
        });
    }}
    

    ============================================================================

    To use the shared preferences, initialize this in you onCreate

    SharedPreferences prefs = getSharedPreferences("the_package_of_your_app", Context.MODE_PRIVATE);
    

    Then, try to get the saved value

    int my_saved_value = prefs.getInt("the_package_of_your_app.my_int_1", 0);
    if(my_saved_value != 0)
        //your value of your timer was saved, do what's needed with it
    else
        //there was no value saved, or the timer was at 0
    

    Now you have to save that value when needed (when the timer is stopped, or the application is closed)

    prefs.edit().putInt("the_package_of_your_app.my_int_1", my_value).apply();
    

提交回复
热议问题