安卓线程子线程与主线程通信

其实线程这个东西,说复杂也不是很复杂,说简单,他能搞死你。本小白一开始接触线程是在去年,写一个小的app时需要联网,连了半天还是报错,权限也申请了,代码也没啥问题,就是报错,后来打了个log看了一下,说是不能在主线程里连网。坑爹啊,我看了网上教程写的,那里面也没提到要在子线程里啊。后来看了一下,说是从4.0开始的。话不多说了,看代码。

    private Thread threadLogin;
    private  Handler handler;
    handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {//处理线程消息
                switch (msg.what) {
                    case 0:
                        //业务代码
                    case 1:
                        //业务代码
                }
            }
        };
    threadLogin = new Thread(runnable);
    threadLogin.start();
    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            try {

                    Message msg = new Message();
                    msg.what = MSG_SUC;
                    msg.obj = new String[]{userid, username};//附带数据,如果对象不是全局的,可以讲对象作为msg的一部分发送给主线程
                    handler.sendMessage(msg);//向主线程发送消息,由于安卓连接网络必须在子线程中进行,所以在获得数据后,使用handler向主线程返回数据

                }
                else{
                   
                    Message msg = new Message();
                    msg.what = MSG_FAI;
                    handler.sendMessage(msg);    
                }
            } catch (Exception e) {
                Message msg = new Message();
                msg.what = MSG_FAI;
                handler.sendMessage(msg);
            }
        }
    };

基本的流程是这样的:

在主线程中开辟一个新的线程,线程启动,执行完业务逻辑后,发送给主线程,主线程使用handler处理线程发送的消息。

本人是一个安卓小白,线程上还有一个问题,就是线程在处理完业务后,会不会自动销毁,如果不是的话,怎么才能让他手动销毁,恳请各位大佬解答。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值