当前位置:   article > 正文

Android中创建子线程进行网络访问_//主线程中接收子线程发送的消息并处理

//主线程中接收子线程发送的消息并处理
  1. //主线程中接收子线程发送的消息并处理
  2. private Handler handler=new Handler(){
  3. @SuppressLint("HandlerLeak")
  4. public void handleMessage(Message msg){
  5. try {
  6. switch (msg.what){
  7. case 0:
  8. String Listeningresponse= msg.getData().getString("Listeningdate");
  9. case 1:
  10. String response = msg.getData().getString("date");
  11. case 2:
  12. vsnfilename=msg.getData().getString("vsndate");
  13. default:
  14. Log.e(TAG, " handler fail in send" );
  15. }
  16. }catch (Exception e){
  17. e.printStackTrace();
  18. }
  19. }
  20. };

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

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

子线程执行的任务:

  1. Runnable runnabletday = new Runnable(){
  2. @Override
  3. public void run() {
  4. try {
  5. //String url=ResourceMethod.UrlSplicingMinute();
  6. String url2=ResourceMethod.UrlSplicingDay();
  7. hadata=getDateFromSever(url2);
  8. Message msg = new Message();
  9. Bundle bundle =new Bundle();
  10. bundle.putString("date", hadata);// 这是数据标志,在接收的时候方便辨认
  11. msg.setData(bundle);
  12. msg.what = 1;
  13. handler.sendMessage(msg);
  14. } catch (Exception e) {
  15. // TODO Auto-generated catch block
  16. e.printStackTrace();
  17. }
  18. }
  19. };

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

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

  1. //进行http请求并获取返回的数据
  2. public String getDateFromSever(String url) {
  3. try {
  4. OkHttpClient client = new OkHttpClientFactory().getInstance();
  5. Request request = new Request.Builder()
  6. .url(url)
  7. .get()
  8. .build();
  9. Response response = client.newCall(request).execute();
  10. Log.d(TAG, "Ipaws response="+response);
  11. String responseData = response.body().string();
  12. if (response.isSuccessful()) {
  13. return responseData;
  14. }else {
  15. Log.d(TAG, "responseData: error");
  16. }
  17. } catch (Exception e) {
  18. e.printStackTrace();
  19. }
  20. return null;
  21. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/465151
推荐阅读
相关标签
  

闽ICP备14008679号