當前位置:首頁 » 安卓系統 » 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。

熱點內容
md5加密ppt 發布:2024-05-01 21:51:46 瀏覽:352
dnf雲伺服器50g 發布:2024-05-01 21:44:56 瀏覽:448
壓縮性粉碎性骨折 發布:2024-05-01 21:23:46 瀏覽:613
iphone4s怎麼密碼 發布:2024-05-01 21:23:38 瀏覽:307
csgo如何換國服伺服器 發布:2024-05-01 21:03:47 瀏覽:784
qq改寫密碼是多少位數字 發布:2024-05-01 21:02:01 瀏覽:462
你你連接的密碼是多少 發布:2024-05-01 20:59:13 瀏覽:478
安卓應用哪個軟體最多 發布:2024-05-01 20:54:05 瀏覽:22
微信牆完美版php源碼 發布:2024-05-01 20:17:36 瀏覽:485
優酷上傳視頻軟體 發布:2024-05-01 20:17:32 瀏覽:272