您的位置:首页 > 移动开发 > Android开发

android 再谈定时器 timer 每秒更新一次!

2011-04-13 14:51 561 查看
以前学习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);
}
}


运行结果如下:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: