android应用开发中常常会用到定时器,不可避免的需要用到 TimerTask 定时器任务这个类
例如在Android平台中需要反复按周期执行方法可以使用Java上自带的TimerTask类,TimerTask相对于Thread来说对于资源消耗的更低,除了使用Android自带的AlarmManager,使用Timer定时器是一种更好的解决方法。下面我们通过一个简单的Demo来讲解Timer和TimerTask的使用。首先先看项目运行效果:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauAnRFllM0MjMzgzMxMTMfBzM1IzM3gzLcBjMvwFOwETMwIzLcRnbl1GajFGd0F2LcRXZu5ibkN3YukGavw1LcpDc0RHaiojIsJye.jpg)
以上就是我们今天要实现的。看起来简单吧。呵呵,废话不多说了,进入正题。
1、首先创建一个Android项目工程,这是必须的。在这里我命名其为TimeDemo。
2、修改主布局文件main.xml,具体代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/myButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始倒计时"
/>
<TextView
android:id="@+id/myTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
这里就不多讲了,好简单,就两个常用的控件。
3、修改Activiyt类,我们要做的工作都放在这个主程序中。具体代码如下:
public class MyActivity extends Activity {
TextView text;
Button button;
Timer timer;
int i=10;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text=(TextView)findViewById(R.id.myTextView);
final Handler myHandler=new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
if(msg.what>0){
/*这里要注意下,msg.what是一个整形型数字,
* 而setText(字符),所以要再前面加上""*/
text.setText(""+msg.what);
}
else{
text.setText("开始");
timer.cancel();
}
}
};
button=(Button)findViewById(R.id.myButton);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 定义计时器
timer=new Timer();
/*定义计划任务,根据参数的不同可以完成以下种类的工作:
* 在固定时间执行某任务,在固定时间开始重复执行某任务,
* 重复时间间隔可控,在延迟多久后执行某任务,在延迟多久
* 后重复执行某任务,重复时间间隔可控
*/
timer.schedule(new TimerTask() {
// TimerTask 是个抽象类,实现的是Runable类
@Override
public void run() {
// TODO Auto-generated method stub
// Message message=new Message();
// message.what=i--;
i--;
myHandler.sendEmptyMessage(i);
}
}, 1000, 1000);
}
});
}
}
程序中需要注意的地方,我都写明了。在这里就不啰嗦了。呵呵。
4、编辑好,保存。单击项目执行之,便可以了。
呵呵,当我们单击开始倒计时按钮时。在按钮下面的TextView出现相应的数字。当小于0时,就会提示“开始”。
今天就到这里。