android 主UI线程与子线程之间传递数据Bundle

**

小白使用bundle在线程之间传递数据。

**
实现从云端数据库中拿出数据,并将数据传递给UI主线程,并更新UI界面。

因为Android 3.0以后使用网络相关的东西不能直接在主线程实现。所以需要创建一个子线程,从云数据库中获取数据。

创建一个GetDataThread线程类

public class GetDataThread extends Thread {
	 //重点
    private Handler handler ;
    private String type;
    /* 传入两个参数,第一个是用于通信的handler,第二个是动态类型 */
    public GetDataThread(Handler h,String type){
        this.handler = h ;
        this.type = type;
     }
    }

想要在线程间传递数据,最主要的是需要把主线程的Handler传进GetDataThread类中,而不是直接new一个新的handler。
在拿到handler后就能在handler中存放数据了。

	    Bundle bundle = new Bundle();
        Message message=new Message();
        //listitem是一个ArrayList<>
        bundle.putSerializable("listitem",listitem);

这里需要注意向bundle中存放不同类型的数据,要使用不同的方法。
字符串用putString。。等,详情百度。。

在主线程中,只要声明一个全局变量handler并重写handleMessage方法,在方法的msg中就可以获取数据了。

 @SuppressLint("HandlerLeak")
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            Bundle bundle = msg.getData();
            List<Map<String,Object>> listitem = (List<Map<String, Object>>) bundle.getSerializable("listitem");
 

        }
    };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值