Android中的Timer一般像下面这样写:

java代码:
Timer timer = new Timer( );

TimerTask task = new TimerTask( ) {
public void run ( ) {
Message message = new Message( );
message.what = 1;
handler.sendMessage(message);
}
};

final Handler handler = new Handler( ) {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
log.e("Timer","Timer");
update( );
break;
}

super.handleMessage(msg);
}
};

protected void onDestroy ( ) {
if (timer != null) {
timer.cancel( );
timer = null;
}
super.onDestroy( );
}
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);
timer.schedule(task,1000,5000);
}


最重要的一点是 timer.schedule(task,1000,5000),如果设置为 timer.schedule(task,5000)是不会工作的。

因为timer.schedule(task,5000) 是表示执行一次的任务。
timer.schedule(task,1000,5000)表示 1 秒钟后开始 5 秒钟为周期 重复执行,
更好的方法是通过下面的代码 (Handler加Runnable线程,更简洁)

java代码:
private Handler handler = new Handler( );

private Runnable runnable = new Runnable( ) {
public void run ( ) {
update( );

handler.postDelayed(this,1000);
//postDelayed(this,1000)方法安排一个Runnable对象到主线程队列中
}
};

handler.postDelayed(runnable,1000); // 开始Timer
handler.removeCallbacks(runnable); //停止Timer


更多相关文章

  1. Android中AppWidget使用方法
  2. Android 官方 Lambda支持方法
  3. 在Eclipse中导入整个Android系统代码
  4. Android应用程序绑定服务(bindService)的过程源代码分析(3)
  5. android BroadcastReceiver遇到 java.lang.IllegalAccessExcepti
  6. Android应用程序组件Content Provider的启动过程源代码分析(3)
  7. Android 调用系统相机拍照保存以及调用系统相册的方法
  8. Android应用程序组件Content Provider的启动过程源代码分析(5)

随机推荐

  1. MySQL数据库操作的基本命令
  2. MySQL常用的建表、添加字段、修改字段、
  3. Mac下MySQL安装配置教程
  4. 配置Mysql主从服务实现实例
  5. windows2008 64位系统下MySQL 5.7绿色版
  6. 图文详解MySQL中两表关联的连接表如何创
  7. VMWare linux mysql 5.7.13安装配置教程
  8. 深度解析MySQL启动时报“The server quit
  9. MySQL5.7.18修改密码的方法
  10. Linux CentOS MySQL数据库安装配置教程