创建子线程对Android进行网络访问

这篇文章介绍了Android中创建子线程进行网络访问的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考

 //主线程中接收子线程发送的消息并处理 private Handler handler=new Handler(){ @SuppressLint("HandlerLeak") public void handleMessage(Message msg){ try { switch (msg.what){ case 0: String Listeningresponse= msg.getData().getString("Listeningdate"); case 1: String response = msg.getData().getString("date"); case 2: vsnfilename=msg.getData().getString("vsndate"); default: Log.e(TAG, " handler fail in send" ); } }catch (Exception e){ e.printStackTrace(); } } };

上面代码是在主线程中接收子线程发送的消息,根据消息标识处理后续操作。下面是子线程代码:

开启子线程服务:new Thread(runnable).start();

子线程执行的任务:

 Runnable runnabletday = new Runnable(){ @Override public void run() { try { //String url=ResourceMethod.UrlSplicingMinute(); String url2=ResourceMethod.UrlSplicingDay(); hadata=getDateFromSever(url2); Message msg = new Message(); Bundle bundle =new Bundle(); bundle.putString("date", hadata);// 这是数据标志,在接收的时候方便辨认 msg.setData(bundle); msg.what = 1; handler.sendMessage(msg); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } };

代码 Bundle bundle =new Bundle();bundle.putString("date", hadata)data是数据标识,hadata是需要发送的数据。可以是intstringobject等。msg.what = 1是设置的消息标识位,在接收消息的时候作为区分消息。

hadata=getDateFromSever(url2)是访问url2获取数据的方法:具体实现如下:

 //进行http请求并获取返回的数据 public String getDateFromSever(String url) { try { OkHttpClient client = new OkHttpClientFactory().getInstance(); Request request = new Request.Builder() .url(url) .get() .build(); Response response = client.newCall(request).execute(); Log.d(TAG, "Ipaws response="+response); String responseData = response.body().string(); if (response.isSuccessful()) { return responseData; }else { Log.d(TAG, "responseData: error"); } } catch (Exception e) { e.printStackTrace(); } return null; }

以上所述是小编给大家介绍的创建子线程对Android进行网络访问,希望对大家有所帮助。在此也非常感谢大家对0133技术站网站的支持!

以上就是创建子线程对Android进行网络访问的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 移动