android 主UI线程与子线程之间传递数据Bundle
**小白使用bundle在线程之间传递数据。**实现从云端数据库中拿出数据,并将数据传递给UI主线程,并更新UI界面。因为Android 3.0以后使用网络相关的东西不能直接在主线程实现。所以需要创建一个子线程,从云数据库中获取数据。创建一个GetDataThread线程类public class GetDataThread extends Thread {//重点pr...
·
**
小白使用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");
}
};
更多推荐
已为社区贡献1条内容
所有评论(0)