思路:
1.在子线程中处理耗时操作,再通过Handler对象发送消息。
2 通过Handler的handleMessage方法接收其他线程发送过来的数据
代码展示:
public class Fragment_A extends Fragment {
private Handler handler ;
private String urlString = "http://www.51kan.com.cn/lolservice/newlolitemsbytype.jsp?type=defense&start=0";
private List<LOL> lolList;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_a_layout,container,false);
lolList = new ArrayList<>();
initHandler();//2处理其他线程发送过来的数据
startHandler(urlString,0);//1处理耗时操作,获取数据
return view;
}
//1.在子线程中处理耗时操作,再通过Handler对象发送消息。
private void startHandler(final String urlString, final int what) {
new Thread(new Runnable() {
@Override
public void run() {
//下载,解析
String jsonString = HttpUtil.download(urlString);
List<LOL> lolList = Jsonparser.paese(jsonString);
Message msg = Message.obtain();
msg.what=what;
msg.obj=lolList;
//使用handler发动消息,handler对象既是消息的发送者,也是消息的处理者。
handler.sendMessage(msg);
}
}).start();
}
//2 通过Handler的handleMessage方法接收其他线程发送过来的数据
private void initHandler() {
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==0){
List<LOL> tiemList = (List<LOL>) msg.obj;
lolList.addAll(tiemList);
}
}
};
}
}