广告
返回顶部
首页 > 资讯 > 移动开发 >创建子线程对Android进行网络访问
  • 788
分享到

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

2024-04-02 19:04:59 788人浏览 安东尼
摘要

//主线程中接收子线程发送的消息并处理 private Handler handler=new Handler(){ @SuppressLint("Handle


 //主线程中接收子线程发送的消息并处理
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进行网络访问,希望对大家有所帮助。在此也非常感谢大家对编程网网站的支持!

--结束END--

本文标题: 创建子线程对Android进行网络访问

本文链接: https://www.lsjlt.com/news/158506.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作