android更新UI(界面)的方法;android刷新界面数据的方法;android定时器更新界面

Android中常常需要对UI界面进行更新。下面我将介绍的是定时更新UI的几种方法:

一、定时器更新UI的两种方法

1、使用Timer的方式

 private Timer timer=new Timer();
 timer.schedule(new TimerTask() {
            @Override
            public void run() {
              //在这里更新数据
            }
        },0,500); //延迟500毫秒后,执行一次task

为了优化代码,我们需要在退出程序前调用 Timer 的 cancel() 方法关闭定时器,例如:

@Override
    protected void onDestroy() {
        super.onDestroy();
        timer.cancel();//取消任务
    }

此外,你可能对 Timer 的 schedule() 方法里的几个参数不是很理解,这里我简单介绍一下:

timer.schedule(task, 0); // 此处delay为0表示没有延迟,立即执行一次task
timer.schedule(task, 1000); // 延迟1秒,执行一次task
timer.schedule(task, 0, 2000); // 立即执行一次task,然后每隔2秒执行一次task

示例一:显示当前时间(电子时钟)

private TextView times;
    private Timer timer=new Timer();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.first_activity);
        times=(TextView) findViewById(R.id.tv_times);
        updateTime();
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        timer.cancel();//取消任务
    }

    private void updateTime(){
        //启动定时器
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                times.setText(CurrentTime());
            }
        },0,500); //延迟500毫秒后,执行一次task
    }
    
	//获取当前时间
    private String CurrentTime(){
        SimpleDateFormat dateFormat = new SimpleDateFormat("HH时mm分ss秒");
        return "现在是1: "+dateFormat.format(new Date());
    }

实现效果:

在这里插入图片描述

2、使用Handler + Runnable的方式

//定时更新界面数据
    private Handler handler = new Handler();
    private Runnable runnable = new Runnable() {
        public void run () {
            handler.postDelayed(this,500); //每隔0.5秒刷新一次
            //在这里更新数据
        }
    };

定义完定时器后,我们还需要调用 Handler 的 post() 方法才能启动定时器:

handler.post(runnable);//启动定时器

同样地,在退出程序前,需要调用 Handler 的 removeCallbacks() 方法来取消定时器:

@Override
    protected void onDestroy() {
        super.onDestroy();
        handler.removeCallbacks(runnable);//取消定时器
    }

示例二:显示当前时间(电子时钟)

    private TextView times;
    //定时更新界面数据
    private Handler handler = new Handler();
    private Runnable runnable = new Runnable() {
        public void run () {
            handler.postDelayed(this,500); //每隔0.5秒刷新一次
            times.setText(CurrentTime());
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_activity);
        times=(TextView) findViewById(R.id.tv_times2);
        handler.post(runnable);//启动定时器
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        handler.removeCallbacks(runnable);//取消定时器
    }
   
   //获取当前时间 
    private String CurrentTime(){
        SimpleDateFormat dateFormat = new SimpleDateFormat("HH时mm分ss秒");
        return "现在是2: "+dateFormat.format(new Date());
    }

第二种方法的效果:

这里是引用

以上就是时器更新UI的两种方法,它们效果差不多,具体还要看应用场景。
参考1https://blog.csdn.net/xiaanming/article/details/9011193
参考2https://blog.csdn.net/chenzhengfeng/article/details/95071049

  • 6
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值