【问题标题】:Save chronometer value/time? [duplicate]保存计时器值/时间? [复制]
【发布时间】:2015-01-09 15:10:40
【问题描述】:

如何保存我的计时器值?因此,例如,当我按下后退按钮或“杀死”应用程序时,我不希望计时器重置为 00:00。

代码是您按住并释放的按钮。当我按住按钮时,计时器启动,计时器滴答作响,直到我松开按钮。我希望这个时间永远不会重置,这样我就可以看到按下按钮时总共使用了多少时间。任何人请帮助我! :)

这是我的代码:

public class MainActivity extends ActionBarActivity {

    Button button1;
     Chronometer chromo;
     protected long time;




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

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

            return true;
        }
    }
}

【问题讨论】:

    标签: android save chronometer


    【解决方案1】:

    最好的可能是使用 SharedPreferences。这样做的主要目的是使您的应用程序的某些设置在当前实例之后仍然存在(这大致是您的问题)。

    // 0 - for private mode`
     SharedPreferences pref = getApplicationContext().getSharedPreferences("NameForMyPrefs", 0); 
    
     Editor editor = pref.edit();
     editor.putLong("time", time);
    
     editor.putString("otherRelevantData", "Kittens");
     editor.commit();
    

    编辑:

    我改变了在代码中初始化它的方式,使其更加清晰。

    编辑2:

    @Tr4X 发布的链接(引导 here )有一个非常可靠的答案 @2Dee 您应该真正考虑一下。

    编码愉快!如果您有任何问题,请发表评论。

    【讨论】:

    • 初始化Editor已经没用了,可以直接调用pref.edit().putLong(...).apply();
    • 如果他只保存一个值,那肯定是真的。
    • False,你可以用这个保存尽可能多的值,你只需要多次调用
    • 我就是做不来!你能成为兄弟并尝试为我编写代码吗?我对此很陌生..而且我已经尝试了很多!你有我的代码,你确切地知道我的目标是什么。非常感谢您的回答。
    • @Tr4X,是的,但是保存引用的目的是让您不必每次都调用该方法。开销很小,因为您只创建浅拷贝,而不是深拷贝。
    【解决方案2】:

    您应该使用 sharedPreferences 在应用中保存临时数据。搜索它:关于它的教程有几十个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      相关资源
      最近更新 更多