timer常用的函数:

✓ public void schedule(TimerTask task, long delay, long period)
 第1个参数必须是java.util.TimerTask 的子类,并实现 public void
run() 方法,因为 TimerTask 类实现了 Runnable 接口
 从现在起过,delay毫秒以后,每隔period毫秒执行一次run()
方法
✓ schedule(TimerTask task, Date firstTime, long period)
从firstTime时刻开始,每隔period毫秒执行一次run() 方法
✓ public void schedule(TimerTask task, Date time)
 在指定的time时刻执行run() 方法
✓ timer.schedule(TimerTask task, long delay);
从现在起过delay毫秒执行一次run() 方法

TimerTask常用的函数

✓ public abstract void run();执行时间间隔的代码
✓ public boolean cancel() ;关闭timer
✓ public long scheduledExecutionTime()

注意点

✓ TimerTask运行在一个单独的线程里,而不是UI线程。所以使用
Android timer时,注意android的单线程原则,确保线程安全。不要在
TimerTask的run方法中做UI相关的操作,如:TextView.setText()等,这
样可能会导致UI线程阻塞。如果需要可以使用handler向UI线程发消息,
具体处理由UI线程自己完成。

XML

<?xml version="1.0" encoding="utf-8"?>    

MainActivity.java

package com.example.timer_clock;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.TextView;import java.util.Timer;import java.util.TimerTask;public class MainActivity extends AppCompatActivity {    Timer timer;    TextView text;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        text = (TextView) findViewById(R.id.text);        timer = new Timer();//创建timer对象        timer.schedule(new TimerTask(){            public int flag=1;            @Override            public void run() {                Log.v("gyq","run()");                Message message = new Message();                message.what = 0;                message.obj = (flag++)+"aaaa";                mHandler.sendMessage(message);            }        }, 1000, 2000);//1000表示开始时1秒后发送一次,10*10000表示每2秒后发送一次    }    Handler mHandler = new Handler() {        @Override        public void handleMessage(Message msg){            Log.v("gyq","handleMessage()");            if (msg.what == 0) {                String str = (String) msg.obj;                Log.v("gyq","str="+str);                text.setText(text.getText()+str);//设置UI            }else{                text.setText("ccccc");            }            super.handleMessage(msg);        }    };    @Override    protected void onDestroy() {        super.onDestroy();        if (timer != null) {            timer.cancel();//关闭timer        }    }}

更多相关文章

  1. android自定义title的方法
  2. android view的setVisibility方法值的意思
  3. 自定义对话框的实现
  4. android:onClick="xxx"
  5. Android(安卓)AsyncLayoutInflater 源码解析
  6. mac下android真机调试,连接不上设备的解决方法
  7. Linux下android内核编译
  8. Android四大组件【摘抄】
  9. 线程 同步 ConditionVariable

随机推荐

  1. android 自定义view
  2. Android(安卓)SDK Manager无法更新的解决
  3. Android热更新框架Tinker无法更新?
  4. Android架构分析之使用自定义硬件抽象层(
  5. Android中文API(144) —— JsonWriter
  6. Android(安卓)EditView
  7. Android读取Word文档
  8. Android屏幕常亮
  9. Android(安卓)Audio Focus的应用(request
  10. android 开机直接运行app并当做手机桌面