當前位置:首頁 » 安卓系統 » android計時器

android計時器

發布時間: 2022-02-23 04:44:14

A. android 用 service 和 CountDownTimer 實現一個倒計時器的功能

在平時我們編程的時候,經常會用到倒計時這個功能,很多人不知道Android已經幫封裝好了一個類,往往都自己寫。現在發現了這個類,大家共享一下:

在一個TextView不斷顯示剩下的時間,代碼如下:

[java] view plain
private TextView vertifyView;
private CountDownTimer timer = new CountDownTimer(10000, 1000) {

@Override
public void onTick(long millisUntilFinished) {
vertifyView.setText((millisUntilFinished / 1000) + "秒後可重發");
}

@Override
public void onFinish() {
vertifyView.setEnabled(true);
vertifyView.setText("獲取驗證碼");
}
};
調用的時候很簡單:timer.start();
最後說明一下:CountDownTimer timer = new CountDownTimer(10000, 1000)中,第一個參數表示總時間,第二個參數表示間隔時間。意思就是每隔一秒會回調一次方法onTick,然後10秒之後會回調onFinish方法。

B. 怎麼在android里顯示一個計時器

public
boolean
ontouch(view
arg0,
motionevent
arg1)
{
if(flag){
flag
=
false;
timer,cancel();
simpledateformat
b
=
new
simpledateformat("hh:mm:ss");
date
currenttime
=
new
date();
string
s2
=
b.format(currenttime);
cantime1.setstatus(s2);//顯示當前時間
}else{
flag
=
true;
}
return
flag;
}
好像不對,總之你要暫停的時候就用timer.cancel();只要miss在就能記住之前的狀態了,計時器再開的時候再settimertask

C. android 怎麼實現計時器時分秒的操作

可以Calendar.getInstance().get(Calendar.HOUR),獲取當前時間,然後計算時間差

D. 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();

E. android studio怎麼編寫計時器

類似iOS中的NSTimer 定時器功能,開關控制隨機幾秒鍾執行指定功能;

平台:Android

開發環境:android Studio

代碼實現:

一. 創建Handler對象和Runnable對象

[java] view plain print?
Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
if (mPageOpen){

if (interstitialAd.isLoaded()){ //示例-谷歌插頁廣告
interstitialAd.show();
}else {
AdRequest adRequest = new AdRequest.Builder().build();
interstitialAd.loadAd(adRequest);
}
int random = (int)(Math.random() * 10 +20)*1000; //隨機時間循環執行
handler.postDelayed(this, random);
}
}
};

二. 開關控制

[java] view plain print?
Switch mSwith = (Switch) findViewById(R.id.switchPage);
mSwith.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
mPageOpen = true;
} else {
mPageOpen = false;
}

handler.postDelayed(runnable, 15000); //開關控制執行
}
});

三. 移除定時器

[java] view plain print?
handler.removeCallbacks(runnable);

F. android 裡面的計時器

沒明白你到底想問的是什麼?
5秒間隔本身是ANdroid定義的系統不相應時間

G. android中怎麼實現倒計時怎麼按照小時分鍾

Android實現計時與倒計時的五種方法:

方法一
Handler與Message(不用TimerTask)

public class timerTask extends Activity{
private int recLen = 11;
private TextView txtView;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);

Message message = handler.obtainMessage(1); // Message
handler.sendMessageDelayed(message, 1000);
}

final Handler handler = new Handler(){

public void handleMessage(Message msg){ // handle message
switch (msg.what) {
case 1:
recLen--;
txtView.setText("" + recLen);

if(recLen > 0){
Message message = handler.obtainMessage(1);
handler.sendMessageDelayed(message, 1000); // send message
}else{
txtView.setVisibility(View.GONE);
}
}

super.handleMessage(msg);
}
};
}
linux

方法二
Handler與Thread(不佔用UI線程)

public class timerTask extends Activity{
private int recLen = 0;
private TextView txtView;

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);

new Thread(new MyThread()).start(); // start thread
}

final Handler handler = new Handler(){ // handle
public void handleMessage(Message msg){
switch (msg.what) {
case 1:
recLen++;
txtView.setText("" + recLen);
}
super.handleMessage(msg);
}
};

public class MyThread implements Runnable{ // thread
@Override
public void run(){
while(true){
try{
Thread.sleep(1000); // sleep 1000ms
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}catch (Exception e) {
}
}
}
}
}

方法三
Timer與TimerTask(Java實現)

public class timerTask extends Activity{

private int recLen = 11;
private TextView txtView;
Timer timer = new Timer();

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);

timer.schele(task, 1000, 1000); // timeTask
}

TimerTask task = new TimerTask() {
@Override
public void run() {

runOnUiThread(new Runnable() { // UI thread
@Override
public void run() {
recLen--;
txtView.setText(""+recLen);
if(recLen < 0){
timer.cancel();
txtView.setVisibility(View.GONE);
}
}
});
}
};
}
方法四
TimerTask與Handler(不用Timer的改進型)

public class timerTask extends Activity{
private int recLen = 11;
private TextView txtView;
Timer timer = new Timer();

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);

timer.schele(task, 1000, 1000); // timeTask
}

final Handler handler = new Handler(){
@Override
public void handleMessage(Message msg){
switch (msg.what) {
case 1:
txtView.setText(""+recLen);
if(recLen < 0){
timer.cancel();
txtView.setVisibility(View.GONE);
}
}
}
};

TimerTask task = new TimerTask() {
@Override
public void run() {
recLen--;
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
}
方法五
Handler與Runnable(最簡單型)

public class timerTask extends Activity{
private int recLen = 0;
private TextView txtView;

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

setContentView(R.layout.timertask);
txtView = (TextView)findViewById(R.id.txttime);

handler.postDelayed(runnable, 1000);
}

Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
recLen++;
txtView.setText("" + recLen);
handler.postDelayed(this, 1000);
}
};
}
計時與倒計時

方法1,方法2和方法3,都是倒計時

方法4,方法5,都是計時

計時和倒計時,都可使用上述方法實現(代碼稍加改動)

UI線程比較

方法1,方法2和方法3,都是在UI線程實現的計時;

方法4和方法5,是另開Runnable線程實現計時

實現方式比較

方法1,採用的是Java實現,即Timer和TimerTask方式;

其它四種方法,都採用了Handler消息處理

推薦使用

如果對UI線程交互要求不很高,可以選擇方法2和方法3

如果考慮到UI線程阻塞,嚴重影響到用戶體驗,推薦使用方法4,另起線程單獨用於計時和其它的邏輯處理

方法5,綜合了前幾種方法的優點,是最簡的

H. android 計時器

這個是AndroidStudio自帶的TimePickerDialog

I. 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()裡面接收並處理。

J. android多個計時器會影響性能嗎

不會。安卓實現同時多個倒計時效果的步驟:
1、首先需要在輸入框中輸入一個秒數,比如:12,然後獲取輸入框中的值,顯示在一個TextView中;
2、點擊「開始倒計時」按鈕,每隔一秒鍾,秒數減1,然後顯示在TextView中;
3、點擊「停止倒計時」按鈕,計時器停止運行,當再次點擊「開始倒計時」按鈕,計時器繼續運行。
4、平時用的每個商品都應該有兩個屬性值,這里叫它deadLine和isOvere吧,表示商品的到期時間和是否到期,那麼倒計時可以考慮這么實現:設置一個主計時器,每隔1秒發出消息告訴GridView現在的時間,GridView的Item獲得這個時間之後就和deadLine比較,如果已經到deadline了,就把數據源中的這項標記成已到期(修改isOvere的值為true);沒到deadline,就計算還差多少時間,顯示到GridView的Item里。

熱點內容
linux編譯opencv 發布:2025-02-08 08:14:29 瀏覽:710
解除先制的密碼是多少 發布:2025-02-08 08:10:13 瀏覽:861
c語言程序設計豆瓣 發布:2025-02-08 08:08:06 瀏覽:526
學校伺服器如何進入密碼界面 發布:2025-02-08 08:05:45 瀏覽:821
UE4源碼編譯要多久 發布:2025-02-08 07:52:50 瀏覽:232
java架構師做什麼 發布:2025-02-08 07:38:32 瀏覽:774
java解碼器 發布:2025-02-08 07:25:35 瀏覽:297
p4忘記密碼了如何刷機 發布:2025-02-08 07:25:25 瀏覽:307
java分隔 發布:2025-02-08 07:15:02 瀏覽:813
源碼乘法豎式 發布:2025-02-08 07:05:48 瀏覽:137