❶ 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線程中進行。