以前学习java定时器的时候有下面的文章:
一,要定时执行的任务:
package com.fpi;
public class TimerTaskTest extends java.util.TimerTask
{
@Override
public void run()
{
System.out.println("start~~");
}
}
二,执行这个任务:
package com.fpi;
import java.util.Timer;
public class TimerTest
{
public static void main(String args[])
{
Timer timer = new Timer();
timer.schedule(new TimerTaskTest(), 1000,2000);
}
}
三,运行结果:
每2秒打印一个start~~
start~~
start~~
............
其实也可以把上面的两个步骤放到一个类中去写,代码如下:
package com.fpi; import java.util.Timer; public class TimerTest { public static void main(String args[]) { Timer timer = new Timer(); timer.schedule(new TimerTaskTest() { @Override public void run() { System.out.println("start~~"); } }, 1000, 2000); } }
下面就按照上面的两种方法在android中分别实现。这个小demo的功能就是实现每秒更新一下textview。
第一种分开写的方式,在android下面不太常用,就不过多介绍了。
第二种放在一起写的代码如下:
package com.my; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.widget.TextView; public class TimerDemo extends Activity { private String tag = "@@@"; Timer timer = new Timer(); private int i = 0; private TextView text = null; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); int msgId = msg.what; Log.e(tag, msgId + ""); switch (msgId) { case 1: text.setText(getResources().getText(R.string.timer_task_print) .toString() + i); i++; break; default: break; } } }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setView(); setTimerTask(); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); timer.cancel(); } private void setView() { text = (TextView) findViewById(R.id.text); } private void setTimerTask() { timer.schedule(new TimerTask() { @Override public void run() { // TODO Auto-generated method stub Message message = new Message(); message.what = 1; handler.sendMessage(message); } }, 0, 1000); } }
运行结果如下: