展会信息港展会大全

Android实现计时与倒计时的几种方法 Timer与TimerTask
来源:互联网   发布日期:2016-01-14 12:42:59   浏览:3483次  

导读:方法一Timer与TimerTask(Java实现)public class timerTask extends Activity{瀀爀椀瘀愀琀攀 int recLen = 11;...

方法一

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

}

};

}

方法四

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) {

}

}

}

}

}

方法五

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);

}

};

}

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港