安卓中关于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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Service的浅谈
下一篇:关于一些TCP IP协议的解释ps:来自于网络的收集

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月13日 00时28分17秒