Android开启子线程获得数据,主线程错误,子线程停止

Android经常需要开启子线程去执行其他任务,比如连接mysql或是连接服务器。注意:如果主线程出现错误,子线程将会停止传输哦!(我在这翻了个跟头)

//Android 连数据库开线程
private void generateTestData(){

    ConnectService connectService = new ConnectService();
    Thread thread = new Thread(connectService);
    thread.start();

}
 class ConnectService implements Runnable{

        @Override
        public void run() {
        //执行你需要在子线程执行的方法(下面2行是我自己的方法,你们应该执行你们自己的方法)
            CommentserviceOkhttp commentserviceOkhttp = new CommentserviceOkhttp();
            //方法返回的数据commentsList
            commentsList = commentserviceOkhttp.getCommentDetail(1);
             //将方法返回的数据传出去(不传给Handler,Activity得不到数据,参数设成全局变量也没有数据)
             Bundle bundle = new Bundle();
          //传输的如果是实体,需要让实体implements Serializable
          //putSerializable(key,value),key是commentListadd
            bundle.putSerializable("commentListadd",(Serializable) commentsList);
            Message message = mHandler.obtainMessage(SEND_MESSAGE);
            message.setData(bundle);
            mHandler.sendMessage(message);

        }
    }

3

public Handler mHandler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        switch (msg.what){
            case SEND_MESSAGE:
                Bundle bundle = msg.getData();
		//现在commentsList 就是你的子线程传输过来的数据可以使用了,可以设一个全局变量,把值附给它
                commentsList = (List<CommentDetailBean>) bundle.getSerializable("commentListadd");
                Log.d("handleMessage",commentsList.get(0).getContent());
                initExpandableListView(commentsList);
                break;
        }
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值