android使用timer和timertask实现计时器
2017-04-07 15:11
393 查看
too simple to show u my code directly
效果:第一个activity,oncreate中启动计时器,当activity不可见时暂停计时器,可见时再继续计时器,跳到第二个activity时显示当前所用时间,并暂停计时器,返回第一个activity时启动计时器。
(注意:在oncreat()中启动计时器,在onpause()中暂停,在onrestart()中启动继续记时。)
第一个activity代码:
第一个activity的presenter的代码
第二个activity代码
效果:第一个activity,oncreate中启动计时器,当activity不可见时暂停计时器,可见时再继续计时器,跳到第二个activity时显示当前所用时间,并暂停计时器,返回第一个activity时启动计时器。
(注意:在oncreat()中启动计时器,在onpause()中暂停,在onrestart()中启动继续记时。)
第一个activity代码:
package com.febmaple.testtimer; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private TextView tvTime; private MainPresenter presenter; private String recordTime; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvTime = (TextView) findViewById(R.id.tv_time); presenter = new MainPresenter(this); presenter.startTimerFrom0(); } public void showTime(String time) { tvTime.setText(time); recordTime = time; } // public void startFromPause(View view) { // presenter.startTimerFromPause(); // } // // public void stop(View view) { // presenter.stopTimer(); // } @Override protected void onRestart() { super.onRestart(); presenter.startTimerFromPause(); } // @Override // protected void onStop() { // super.onStop(); // presenter.stopTimer(); // } @Override protected void onPause() { super.onPause(); presenter.stopTimer(); } public void nextActivity(View view) { startActivity(SecAvtivity.newIntent(MainActivity.this, recordTime)); } }
第一个activity的presenter的代码
package com.febmaple.testtimer; import java.util.Locale; import java.util.Timer; import java.util.TimerTask; /** * 作者: FebMaple on 7/4/2017. * 邮箱: febmaple219@gmail.com * 版权: FebMaple * ==================================================== */ public class MainPresenter { private MainActivity act; public MainPresenter(MainActivity act) { this.act = act; } /** * 计时 */ private TimerTask timerTask; private Timer timer = new Timer(); private int cntIng = 0; //从0开始记时 public void startTimerFrom0() { timerTask = new TimerTask() { int cntStart = 0; @Override public void run() { act.runOnUiThread(new Runnable() { @Override public void run() { String time = getStringTime(cntStart++); cntIng = cntStart; act.showTime(time); } }); } }; timer.schedule(timerTask, 0, 1000);//每隔一秒执行一次task中的任务。 } //暂停后开始记时 public void startTimerFromPause() { timerTask = new TimerTask() { @Override public void run() { act.runOnUiThread(new Runnable() { @Override public void run() { String time = getStringTime(cntIng++); act.showTime(time); } }); } }; timer.schedule(timerTask, 0, 1000); } //停止记时 public void stopTimer() { if (!timerTask.cancel()) { timerTask.cancel(); timer.cancel(); } } private String getStringTime(int cnt) { int hour = cnt / 3600; int min = cnt % 3600 / 60; int second = cnt % 60; return String.format(Locale.CHINA, "%02d:%02d:%02d", hour, min, second); } }
第二个activity代码
package com.febmaple.testtimer; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; /** * 作者: FebMaple on 7/4/2017. * 邮箱: febmaple219@gmail.com * 版权: FebMaple * ==================================================== */ public class SecAvtivity extends Activity { private TextView tvAimTime; private static final String RECORD_TIME = "RECORD_TIME"; public static Intent newIntent(Context context, String recordTime) { Intent intent = new Intent(); intent.setClass(context, SecAvtivity.class); intent.putExtra(RECORD_TIME, recordTime); return intent; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sec); tvAimTime = (TextView) findViewById(R.id.tv_time); String usedTime = getIntent().getStringExtra(RECORD_TIME); tvAimTime.setText(usedTime); } }
相关文章推荐
- android使用Timer 和 TimerTask 实现定时任务
- Android倒计时实现及Timer和TimerTask的使用
- Android Timer,TimerTask简单的使用
- ASP.NET中使用计时器(Timer)来实现群发邮件等功能
- 【Android】计时器Timer使用
- android AppWidget的使用以及利用TimerTask实现widget的定时更新
- Android中三种计时器Timer、CountDownTimer、handler.postDelayed的使用
- 【Android】Android实现计时与倒计时的几种方法 Timer与TimerTask
- Java中使用Timer和TimerTask实现多线程
- android----Timer和TimerTask的使用
- Timer 计时器的初步使用(实现渐入效果)
- Android计时器的三种实现方式(Chronometer、Timer、handler)
- android TimerTask的使用 每隔1秒向控制台打印Log 为了线程安全应该通过hangler来实现
- Android 定时器的实现方式(TimerTask、Handler)及 Handler使用解析
- android AppWidget的使用以及利用Service TimerTask实现widget的定时更新
- Java中使用Timer和TimerTask实现多线程
- 【Android】使用Chronometer组件实现一个简单的计时器
- Android中timer(计时器)的使用
- Java中使用Timer和TimerTask实现多线程
- android 计时器的三种实现(Chronometer、Timer、handler)