❶ 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怎么设置一个定时的任务
我知道的有三种方法;
方法一:可以通过android自带的Handler机制,里面有new Handler().postDelayed(new Runnable(){
@Override
public void run() {
//延迟的时间到了执行
}
},延迟的时间);
方法二:可以通过java里面的线程来写,new Thread().sleep(延迟时间);时间到了会继续执行;
方法三:java定时器(有很多方法)例如:
Timer timer = new Timer();
timer.schele(new TimerTask() {
public void run() {
System.out.println("-------设定要指定任务--------");
}
}, long delay,long period);
delay延迟的时间,period为多久执行一次;
个人推荐用方法一,毕竟安卓系统自带的,并且安卓不适合加定时器,如果处理不当一直执行的话,要么卡,要么程序崩溃。还有发布版本可能审核不通过。
❸ 在Android里面用Timer.schele(TimerTask task, long delay, long period)
因为每次onDraw调用,你都会启动一个Timer,这样Timer越来越多。
在第一个Timer木有结束时,已经启动了若干个,每个都每隔0.3秒发出一个message,导致变化加速。
只需要把new Timer这个放在初始化函数里调用就行。
onDraw是会反复调用滴。
❹ 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();
❺ 一个android Timer,为什么只执行了一次
通过 timer.schele执行的?那注意参数写法, timer.schele(task,1000,5000),表示1秒后开始,5秒为周期,循环执行, timer.schele(task,5000),表示5秒后执行一次结束。
❻ javaandroid延时函数 怎么解决这个问题
在Java中有时候需要使程序暂停一点时间,称为延时。普通延时用Thread.sleep(int)方法,这很简单。它将当前线程挂起指定的毫秒数。如
Java 代码复制内容到剪贴板
try
{
Thread.currentThread().sleep(1000);//毫秒
}
catch(Exception e){}
在这里需要解释一下线程沉睡的时间。sleep()方法并不能够让程序"严格"的沉睡指定的时间。例如当使用5000作为sleep()方法的参数时,线 程可能在实际被挂起5000.001毫秒后才会继续运行。当然,对于一般的应用程序来说,sleep()方法对时间控制的精度足够了。
但是如果要使用精确延时,最好使用Timer类:
Java 代码复制内容到剪贴板
Timer timer=new Timer();//实例化Timer类
timer.schele(new TimerTask(){
public void run(){
System.out.println("退出");
this.cancel();}},500);//五百毫秒
这种延时比sleep精确。上述延时方法只运行一次,如果需要运行多次, 使用timer.schele(new MyTask(), 1000, 2000); 则每间隔2秒执行MyTask()
❼ Android设置了timer.schele(stopTask, 1000, 1000)结果不按照1毫秒秒运行因为计算过程太长该怎么解决
你可以试试在stopTask里每次多开一个线程来运行。
❽ schele()方法的参数问题
schele(TimerTask task,long delay,long period) 方法用于安排指定的任务进行重复的固定延迟执行,在指定的延迟后开始。
声明
以下是java.util.Timer.schele()方法的声明。
public void schele(TimerTask task,long delay,long period)
参数
task--这是被调度的任务。
delay--这是以毫秒为单位的延迟之前的任务就是执行。
period--这是在连续执行任务之间的毫秒的时间。
❾ Android调用mtimer.schele(mtimertask, 1000, 5000);,然后在run中实现Thread.sleep()
在线程中睡眠不会影响timer的调度,即不会把间隔增加到9秒
在线程中不能设置UI的内容,不会生效,甚至会导致崩溃;改变UI的内容只能在UI线程中进行。