Android Handler

来源:互联网 发布:淘宝集市认可tm商标吗 编辑:程序博客网 时间:2024/06/09 16:48

开发安卓半年了,其实还是一只菜鸟,对安卓中的线程、Looper、Handler、Task还是比较陌生的。现在抽了一点儿小空,自己写了一个关于Handler+Thread联用的例子。

直接上代码了:

package com.hyc.myapplication.handler;import android.os.Handler;import android.os.Message;import android.widget.TextView;/** * Created by asus on 12/29/2015. */public class MyHandler extends Handler {    public static final int MSG_WHAT = 0X1;    private TextView textView;    public MyHandler(TextView textView) {        this.textView = textView;    }    @Override    public void handleMessage(Message msg) {        switch (msg.what) {            case MSG_WHAT:                textView.setText(msg.obj.toString());                break;        }        super.handleMessage(msg);    }}
package com.hyc.myapplication.thread;import android.os.Message;import com.hyc.myapplication.handler.MyHandler;/** * Created by asus on 12/29/2015. */public class MyThread implements Runnable {    private MyHandler handler;    private boolean flag = true;    public MyThread(MyHandler handler) {        this.handler = handler;    }    @Override    public void run() {        while (flag) {            Message msg = new Message();            msg.what = MyHandler.MSG_WHAT;            msg.obj = System.currentTimeMillis();            handler.sendMessageDelayed(msg, 1000);        }    }    public void setFlag(boolean flag) {        this.flag = flag;    }}
以下为启动线程:
@Override            public void onClick(View view) {                mHandler = new MyHandler(tvNum);                mThread = new MyThread(mHandler);                Thread t = new Thread(mThread);                t.start();            }
以下为停止线程:
tvHello.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                mThread.setFlag(false);            }        });
结果出来后,发现一个问题:界面跳动的数字时快时慢,不知原因。


0 0
原创粉丝点击