如何在android中暂停和启动计时器?

时间:2012-06-30 05:59:51

标签: android countdowntimer

我正在开发Android应用程序。在我的项目中,我有3页。

  • 第一页包含1个按钮。
  • 第二页由计时器代码组成。
  • 第三页再次包含一个按钮。

现在我的要求是,当我点击第一页按钮时,第三页应该打开,第二页中的计时器应该暂停。当我点击第三页按钮时再次 第二页计时器应重新启动停止的时间,并应打开第一页。

我正在努力完成这项任务。通过它指导我,建议应该做些什么。

Page1.java

rowTextView.setOnClickListener(new OnClickListener() {
  public void onClick(View v) {

    Intent myIntent = new Intent(v.getContext(),Page3.class);
    startActivity(myIntent);
    finish();                                       
  }
});

Page2.java

public class TimeractivitybestActivity extends Activity {
    EditText e1;
    MyCount counter;
    Long s1;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        e1 = (EditText) findViewById(R.id.editText1);
        counter = new MyCount(15000, 1000);
        counter.start();
     }

    public void method(View v) {

        switch (v.getId()) {

        case R.id.button1:
            counter.cancel();
            break;
        case R.id.button2:
            counter = new MyCount(s1, 1000);
            counter.start();
        }
    }

    public class MyCount extends CountDownTimer {
        public MyCount(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }
        @Override
        public void onFinish() {
            e1.setText("DONE");
        }
        @Override
        public void onTick(long millisUntilFinished) {
            s1 = millisUntilFinished;
            e1.setText("left:" + millisUntilFinished / 1000);
        }
    }
}


Page3.java

public void gobacktopage1(View v)
    {
        Intent myIntent = new Intent(v.getContext(),Page1.class);
        startActivity(myIntent);
        finish();
    }

3 个答案:

答案 0 :(得分:1)

您可以随时存储 timeLeft(即s1 )并再次使用它,同时阅读评论

1)在呼叫计时器时,检查您是否有任何存储时间

    Page1.java       
    rowTextView.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
        long time = sp.getLong("time", 0); // get saved time of times
        Intent myIntent = new Intent(v.getContext(),Page3.class); 
        myIntent.putExtra("time", time); // send it to page2
        startActivity(myIntent); 
        finish();                                        
      } 
    }); 

2)如果时间不是0,请使用时间开始时间。

    Page2.java 

    public class TimeractivitybestActivity extends Activity {
        EditText e1;
        MyCount counter;
        Long s1;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            long time = this.getIntent().getLongExtra("time", 0); // get
                                                                    // saved
                                                                    // time
            time = (time != 0) ? time : 1500;
            e1 = (EditText) findViewById(R.id.editText1);
            counter = new MyCount(time, 1000); // start with saved time
            counter.start();
        }

        public void method(View v) {

            switch (v.getId()) {

            case R.id.button1:
                counter.cancel();
                break;
            case R.id.button2:
                counter = new MyCount(s1, 1000);
                counter.start();
            }
        }

        public class MyCount extends CountDownTimer {
            public MyCount(long millisInFuture, long countDownInterval) {
                super(millisInFuture, countDownInterval);
            }

            @Override
            public void onFinish() {
                e1.setText("DONE");
            }

            @Override
            public void onTick(long millisUntilFinished) {
                s1 = millisUntilFinished;
                e1.setText("left:" + millisUntilFinished / 1000);
            }
        }

        public void onPause() {
            SharedPreferences sp = PreferenceManager
                    .getDefaultSharedPreferences(this);
            Editor et = sp.edit();
            et.putLong("time", s1); // save time SharedPreference in onPause
            et.commit();
        }

    }

3)我认为第3页没有变化。

    Page3.java 

    public void gobacktopage1(View v) 
        { 
            Intent myIntent = new Intent(v.getContext(),Page1.class); 
            startActivity(myIntent); 
            finish(); 
        } 

答案 1 :(得分:0)

这是它的工作原理......

MyCount counter;
Long s1;

     counter= new MyCount(300000,1000);
    counter.start();

public void asdf(View v){  <---- method for onclick of buttons pause and resuming timer

    switch(v.getId()){



    case R.id.button1:<-- for pause

        counter.cancel();
        break;
    case R.id.button2:<--- for resume
        counter= new MyCount(s1,1000);
         counter.start();
    }
}
public class MyCount extends CountDownTimer{
    public MyCount(long millisInFuture, long countDownInterval) {
    super(millisInFuture, countDownInterval);
    }
    @Override
    public void onFinish() {
    mediaplayer.stop();
   mediaplayer.release();
    }
    @Override
    public void onTick(long millisUntilFinished) {
        s1=millisUntilFinished;

    }
    }

案例R.id.button1:&lt; - 暂停

        counter.cancel();

用于暂停计时器并重新开始的那个...

以及在你的情况下

public void gobacktopage1(查看v)     {         Intent myIntent = new Intent(v.getContext(),Page1.class);         startActivity(myIntent);         完();     }

写一个方法,添加counter.cancel();在那个方法中并调用该方法......

答案 2 :(得分:0)

public class TimerActivity extends Activity{

EditText e1;
MyCount counter;
Long s1;
/** Called when the activity is first created. */ 
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    e1=(EditText)findViewById(R.id.editText1);
    counter= new MyCount(5000,1000);
    counter.start();
}
public void asdf(View v)
{
    switch(v.getId())
    {
        case R.id.button1:         counter.cancel();
        break;
        case R.id.button2:         counter= new MyCount(s1,1000);
        counter.start();
    }
}
public class MyCount extends CountDownTimer
{
    public MyCount(long millisInFuture, long countDownInterval)
    {
        super(millisInFuture, countDownInterval);
    }
    @Override     public void onFinish()
    {
        e1.setText("DONE");
    }
    @Override     public void onTick(long millisUntilFinished)
    {
        s1=millisUntilFinished;
        e1.setText("left:"+millisUntilFinished/1000);
    }
}

}