Android消息通信机制(子线程向主线程通信).txt

来源:互联网 发布:arp ip mac arpa 编辑:程序博客网 时间:2024/04/28 01:34

步骤

1、实例化MainAcvitity中相关控件,并给启动子线程的控件添加点击事件
2、创建子线程内部类,用于发送信息
3、创建Handler类处理消息,将消息展示到acvitity中的TextView中

public class MainActivity extends AppCompatActivity {    private Button btn_send;    private TextView tv_content;    private MyHandler handler=null;    public static  final int WHAT=1;    private MyThread thread=null;①:    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        if(handler==null){            handler=new MyHandler();        }        btn_send= (Button) findViewById(R.id.btn_send);        tv_content= (TextView) findViewById(R.id.tv_content);        btn_send.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //点击发送按钮启动子线程,接收消息                if(thread==null){                    thread=new MyThread();                    thread.start();                }            }        });    }    /**     * ②创建子线程内部类,用于发送信息     */    class MyThread extends Thread{        //重写run方法,向主线程发送消息        @Override        public void run() {            super.run();            Message message=handler.obtainMessage(WHAT,"子线程发送消息");//获得Message对象            //发送消息            handler.sendMessage(message);        }    }    /**     * ③创建Handler类处理消息,将消息展示到acvitity中的TextView中     */    class MyHandler extends Handler{        //重写handleMessagen方法,并置于主线程中(在acvitity创建时候实例化)        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            //根据Message的操作类型不同处理数据            switch (msg.what){                case WHAT:                    //拿到消息内容并处理                    String content=msg.obj.toString();                    tv_content.setText(content);                    break;            }        }    }
0 0
原创粉丝点击