使用Handler下载数据

来源:互联网 发布:白狐小说网站源码 编辑:程序博客网 时间:2024/06/06 07:34

思路:
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);                }            }        };    }}
0 0
原创粉丝点击