**

小白使用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");
 

        }
    };
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐