安卓中关于Handler机制的浅谈
发布日期:2021-06-29 04:56:04
浏览次数:3
分类:技术文章
本文共 2307 字,大约阅读时间需要 7 分钟。
package com.example.fafa.justabouthandler;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends AppCompatActivity implements Handler.Callback{ private static final int UPDATE_TEXT = 100; private TextView mTetx; private Button mChangeBt; private Handler handler=new Handler(this); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { mTetx = (TextView) findViewById(R.id.my_text); mChangeBt = (Button) findViewById(R.id.change); mChangeBt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new Thread(new Runnable() { @Override public void run() { // 1 mTetx.setText("bye,world"); Message message= new Message(); message.what=UPDATE_TEXT; handler.sendMessageDelayed(message,5000); // handler.sendEmptyMessageDelayed(UPDATE_TEXT,5000); //这个是方法二只需要一句代码简单些 /*当你点进sendEmptyMessageDelayed的时候你会发现 public final boolean sendEmptyMessageDelayed(int what, long delayMillis) { Message msg = Message.obtain(); msg.what = what; return sendMessageDelayed(msg, delayMillis); } ,其实这两个方法是一样一样的,一个传Message类型的msg,一个传int类型的what,传what的,最终会转为msg。 */ } }).start(); } }); } @Override public boolean handleMessage(Message msg) { switch (msg.what) { case UPDATE_TEXT: mTetx.setText("bye,world"); break; } return false; }}
在上面的代码中布局中就只有一个TextView和一个Button控件 给按钮设置一个监听点击的时候开一个线
程,因为安卓是线程不安全的如果在子线程中直接像我的注释1一样直接更新UI那么程序就会crash掉,这
时候就应该像代码写的一样直接利用handler来发送消息,handlerMessage是在主线程中运行的就会接收
此消息然后就能更新UI了
转载地址:https://blog.csdn.net/zhang_linhua/article/details/74171975 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月13日 00时28分17秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
接手软件测试新项目的流程
2019-04-29
jmeter-性能测试2-脚本录制开发
2019-04-29
jmeter-性能测试3-参数化
2019-04-29
期货基础知识
2019-04-29
期权基础
2019-04-29
jmeter-性能测试6-性能基础扫盲
2019-04-29
pytest+allure生成测试报告
2019-04-29
接口测试用例
2019-04-29
vnc安装配置
2019-04-29
Allure 测试报告:allure.title 去掉后方的参数化显示
2019-04-29
appium起源-环境配置
2019-04-29
appium初识-firstdemo
2019-04-29
allure报告的定制化
2019-04-29
打破职能之缺陷预防之路
2019-04-29
Python爬虫实战:批量下载网站图片
2019-04-29
Python 使用 PyQt5 开发的关机小工具分享
2019-04-29
利用Python爬取微博数据生成词云图片实例代码
2019-04-29
对Python3 解析html的几种操作方式小结
2019-04-29
Python基于opencv调用摄像头获取个人图片的实现方法
2019-04-29
Opencv+Python实现图像运动模糊和高斯模糊的示例
2019-04-29