Android studio settext通过线程池持续更新显示数值

最近做APP发现settext的数值无法在UI实时更新,但是测试数值是能传到的,只是没法传输出来。查阅资料后才明白需要线程来更新。但是线程只有检测new初始化的时候才能再次运行,线程就变成了一次性更新settext了。之后有查阅资料,线程池可以解决这个问题,但是其他资料都是线程池内循环触发的,我需要的外部每次触发线程池。

最后多方资料查询及自己的调试终于做出来了,特此记录一下,给之后自己一个备份。

final Handler handler = new Handler(){
		@Override
		public void handleMessage(Message msg){
			super.handleMessage(msg);
			if(msg.what == 1){
                //这里面就用来填写输出    
				System.out.println("心率为:"+BIM+"/min");  //日志查看,检查错误
				HeartRate.setText("心率为:"+BIM+"/min");
			}
		}
	};

	//用线程池多次执行线程,传递给handler
	public void runTask() {
		ExecutorService mExecutor = Executors.newSingleThreadExecutor();
		if (mTaskRunnable == null) {
			mTaskRunnable = new Runnable() {
				@Override
				public void run() {
					Message message = new Message();
					message.what = 1;
					handler.sendMessage(message);
				}
			};
		}
		mExecutor.execute(mTaskRunnable);
	}



//在需要的地方调用下面的代码执行线程池
runTask();

这里不能单纯用线程池来使用settext,Android系统中的视图组件并不是线程安全的,如果要更新视图,必须在主线程中更新,不可以在子线程中执行更新的操作。

所以我们就在子线程中通知主线程,让主线程做更新操作。需要使用到Handler对象来通知主线程。

具体的相关知识点自行查询资料,这是我的大致笔记,主要是给自己记录用的。当然如果能帮忙你,那我也很高兴。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值