当前位置:首页 » 安卓系统 » androidtimer时间

androidtimer时间

发布时间: 2022-05-27 16:01:59

⑴ android是用timer计时,结束再开始,还是从结束的时间开始,怎么回事

在平时我们编程的时候,经常会用到倒计时这个功能,很多人不知道Android已经帮封装好了一个类,往往都自己写。现在发现了这个类,大家共享一下: 在一个TextView不断显示剩下的时间,代码如下: [java] view plain private TextView vertify...

⑵ android 倒计时器 设计

有三种实现方式:

第一种:通过Timer与TimerTask结合的方式进行实现
第二种:通过Handler与Message方式进行实现
第三种:通过CountdownTimer进行实现
示例
第一种:
timer.schele(task, 1000, 1000); // timeTask ,一秒执行一次,
TimerTask task = new TimerTask() {
@Override
public void run() {
}
}
第二种:
handler.sendMessageDelayed(message, 1000); //1秒后发送消息
final Handler handler = new Handler(){
public void handleMessage(Message msg){ // handle message
switch (msg.what) {
case 1:
recLen--;
if(recLen > 0){ //如果倒计时没到
Message message = handler.obtainMessage(1);
handler.sendMessageDelayed(message, 1000); // 1秒后发送消息
}
}
super.handleMessage(msg);
}
};
第三种:
new CountdownTimer(30000, 1000) { //30秒倒计时,没秒执行一次
public void onTick(long millisUntilFinished) { //每秒执行一次进该方法
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() { //倒计时结束。
mTextField.setText("done!");
}
}.start();

⑶ java/安卓关于Timer,task,schele重新设置定时任务时间的问题

先cancel,然后再重新实例化、设定时间

⑷ android定时器alarmmanager和timer的区别

在Android上常用的定时器有两种,一种是Java.util.Timer,一种就是系统的AlarmService了。

实验1:使用Java.util.Timer。
在onStart()创创建Timer,每5秒更新一次计数器,并启动。

Java代码

1mTimer = new Timer();
2mTimer.schele(new TimerTask() {
3 @Override
4 public void run() {
5 ++mCount;
6 mHandler.sendEmptyMessage(0);
7 }
8 }, 5*1000, 5*1000);

当连接USB线进行调试时,会发现一切工作正常,每5秒更新一次界面,即使是按下电源键,仍然会5秒触发一次。
当拔掉USB线,按下电源键关闭屏幕后,过一段时间再打开,发现定时器明显没有继续计数,停留在了关闭电源键时的数字。

实验2:使用AlarmService:
2.1通过AlarmService每个5秒发送一个广播,setRepeating时的类型为AlarmManager.ELAPSED_REALTIME。

Java代码
1AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
2am.setRepeating(AlarmManager.ELAPSED_REALTIME, firstTime, 5*1000, sender);

拔掉USB线,按下电源键,过一段时间再次打开屏幕,发现定时器没有继续计数。
2.2setRepeating是的类型设置为AlarmManager.ELAPSED_REALTIME_WAKEUP

Java代码

1AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
2am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 5*1000, sender);

拔掉USB线,按下电源键,过一点时间再次打开屏幕,发现定时器一直在计数。

如此看来,使用WAKEUP才能保证自己想要的定时器一直工作,但是肯定会引起耗电量的增加。

⑸ android countdowntimer为什么时间还没结束就已经进入finish方法

在使用CountDownTimer时,最好不要直接在一个方法里面直接new出一个来,而应该在类开始就要定义和声明一个变量来,再在方法里start。若在方法里要新new个出来,最好要先把之前的清理掉
if(countDownTimer!=null) {
countDownTimer.cancel();
//防止new出多个导致时间跳动加速
countDownTimer=null;
}

然后再写countDownTimer=new CountDownTimer(...)初始化的。
比如,每过一秒就要刷新一下textview,不这样写的话,当这个方法多次调用时就会出现之前new出来的没有被回收,导致仍在后台刷新textview,textview就会因为多个重复的刷新,导致要显示的数字变化加快。

⑹ 关于Android的Timer~

不会啊,我这里不会出现。你是不是写了别的东西。如果多了一个},eclipse会自动报错的。难道你显示都正常?你应该是前面什么代码写的时候少了}吧

⑺ android用timer做定时任务,崩溃的原因

在做定时任务的时候,有的同学可能能会用到Timer这个定时任务的辅助类,
但是使用它会有潜在的风险,风险如下,
(1)时间计算不准确问题
因为Timer是以绝对时间计算定时任务的,会受到系统时间的影响,如果在任务执行期间,更改了系统时间,那么会
导致时间计算不准确问题,导致任务没用按找预定的时间执行。
(2)只能单任务执行
简单讲就是,只能一次执行一个任务,如果前一个任务没有执行完成,后一个任务是无法并行执行的,只能等待前一个任务执行完成
才能执行。也有可能会出现这样的结果,前一个任务执行的时间太长,后几个任务时间短,可能在一个时间段内执行了多个任务,任务又
没有按照我们要执行的时间执行。
(3)非检查异常导致异步任务终止
Timer当在执行的过程中遇到非检查异常的时候,会导致本次任务失败,并且接下来的任务也无法被执行,Timer将会终止执行,这不是
我们要的结果,我们需要一套恢复机制。

Java5以后可以用下面的这个类来替代Time,并且解决了以上三个问题
java.util.concurrent.ScheledThreadPoolExecutor

那么在Android上呢,可以用 java.util.concurrent.ScheledThreadPoolExecutor,也可以用Handler机制做,
但是不建议使用Timer

⑻ android timer 是什么时间

在Android应用开发过程中,设置完Timer后,在Timer消息还没有到来之前,跳到设置里面把时间或者日期往前设置,会发现Timer永远来不了了。
经过源码分析发现:Timer是以系统时间System.currentTimeMillis()(从January 1, 1970 00:00:00算起)为基准,当我们设置了Timer之后,相当于系统会在System.currentTimeMillis()+delayLen (delayLen:Timer多久会来消息)之后给我们发Timer消息。而设置了时间和日期,System.currentTimeMillis()就会改变。从而造成System.currentTimeMillis()+delayLen 已经过时了,这样Timer再了来不了了。
同理把时间或日期向后设置会造成过很久时间才会来Timer消息。

⑼ android 计时器代码

Timer mTimer = new Timer();
mTask = new TimerTask(){
public void run(){
//execute the task
Message message = new Message();
message.what = DIALOG_HIDE;
//Log.e(TAG, "message.what = DIALOG_HIDE");
mHandler.sendMessage(message);
}
};
mTimer.schele(mTask, 5000);
在主线程里开启timer,等于启动了另一个线程,线程之间的通信是要用handler发送message,然后在主线程里用handler.handleMessage()里面接收并处理。

⑽ android程序耗时,timerTask,timer,handler问题

什么耗时40s还是20s?不是很明白
你弄清楚Timer.schele的意思就能明白了呢。
timer.schele(timerTask, seconds * 1000, 1000); //当前是执行一个循环的任务,timerTask是要被执行的任务, seconds * 1000ms后执行第一次timerTask,然后每隔1000ms执行一次timerTask。

热点内容
安卓安装的游戏存档在哪个目录 发布:2025-08-21 17:16:29 浏览:144
cf北京服务器ip 发布:2025-08-21 16:51:13 浏览:725
数据库字段值为空的数据 发布:2025-08-21 16:45:14 浏览:572
php项目视频 发布:2025-08-21 16:34:33 浏览:194
叉叉脚本激活码 发布:2025-08-21 16:34:32 浏览:250
清理ie缓存快捷键 发布:2025-08-21 16:07:30 浏览:443
算法规避 发布:2025-08-21 15:56:48 浏览:895
ip服务器是机器吗 发布:2025-08-21 15:40:34 浏览:770
wpf读数据库存储的时间 发布:2025-08-21 15:30:59 浏览:441
存储过程是先编译好的吗 发布:2025-08-21 15:25:07 浏览:889