博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android简单封装类似JQuery异步请求
阅读量:6233 次
发布时间:2019-06-21

本文共 3867 字,大约阅读时间需要 12 分钟。

在android开发中经常会使用异步请求数据,通常会使用handler或者AsyncTask去做,handler 配合message 使用起来比较麻烦,AsyncTask 线程池只允许128个线程工作,会有溢出的问题,(当然一般情况不会有那么多线程同时工作的)所以写了这个代码,还望高手指正! [Java]代码01    package com.xbl.task;02     03    import java.io.BufferedReader;04    import java.io.InputStream;05    import java.io.InputStreamReader;06    import java.net.URL;07    import java.util.concurrent.Executor;08    import java.util.concurrent.ExecutorService;09    import java.util.concurrent.Executors;10     11    import android.os.Bundle;12    import android.os.Handler;13    import android.os.Message;14    import android.util.Log;15     16     17    public class JQuery {18        19        private static final String KEY = "key";20        private static String TAG = "JQuery";21        private static final int N = 5;// 5个工人 22        private static final Executor worker = Executors.newFixedThreadPool(N);// 线程池23        private static final Handler handler = new Handler(){24            @Override25            public void handleMessage(Message msg) {26                TaskListener listener = (TaskListener)msg.obj;27                Object result = msg.getData();28                if(listener !=null ){29                    listener.callBack(result);30                }31                destory();32            }33        };34        35        private JQuery(){      36        }37        38        public static void execute(final String url,final TaskListener listener){39            worker.execute(new Runnable() {40                @Override41                public void run() {42                    String result = null;43                    try {44                        result = WebUtil.get(url);45                    } catch (Exception e) {46                        Log.e(TAG, e.getMessage());47                    }48                    49                    Message msg = new Message();50                    Bundle data = new Bundle();51                    data.putSerializable(KEY, result);52                    msg.setData(data);53                    msg.obj = listener;54                    handler.sendMessage(msg);55                }56            });57        }58        59        //销毁线程60        private static void destory() {61            if (worker != null && worker instanceof ExecutorService) {62                ExecutorService es = (ExecutorService) worker;63                if (!es.isShutdown()) {64                    es.shutdown();65                }66            }67        }  68        69        public interface TaskListener{70            public void callBack(Object result);71        }72        /**73         *74         * 不必太在意此处代码,只是示例75         *76         */77        public static class WebUtil{78            79            public static String get(String url) throws Exception{80                InputStream inputStream = new URL(url).openStream();81                StringBuilder strBuilder = new StringBuilder();82                BufferedReader reader = new BufferedReader(newInputStreamReader(inputStream));83                for (String s = reader.readLine(); s != null; s = reader.readLine())84                    strBuilder.append(s);85                86                inputStream.close();87                return strBuilder.toString();88            }89        }90    }[代码] [Java]代码01    //调用方法:02    JQuery.execute("http://weather.news.qq.com/inc/minisite_125.js", newJQuery.TaskListener() {               03                    @Override04                    public void callBack(Object result) {05                        TextView t = new TextView(TaskDemoActivity.this);06                        t.setText(String.valueOf(result));07                        LinearLayout layout = (LinearLayout)findViewById(R.id.layout1);08                        layout.addView(t);09                    }10                });

 

转载于:https://www.cnblogs.com/xiaochao1234/p/3709073.html

你可能感兴趣的文章
计算机网络与Internet应用
查看>>
MongodDB学习笔记(二)(复制)
查看>>
oracle在线迁移同步数据,数据库报错
查看>>
linux性能剖析工具
查看>>
PHP模拟发送POST请求之四、加强file_get_contents()发送POST请求
查看>>
搞懂“分布式锁”,看这篇文章就对了
查看>>
给自己出的iOS面试题
查看>>
React as a UI Runtime(四、条件)
查看>>
flutter中的异步
查看>>
IoC容器初始化过程(下)
查看>>
Python GIL
查看>>
DataWorks数据开发模块大改版灰度发布
查看>>
云吞铺子国际版 Mr.Cloud S1E3《Release Instances & Downgrade Configurations》
查看>>
《Groovy极简教程》第8章 Groovy:领域特定语言(DSL)
查看>>
第197天:js---caller、callee、constructor和prototype用法
查看>>
打造人才“云”梯,阿里云联合各高校开展云计算进校园系列活动
查看>>
vm12 安装ubuntu15.10详细图文教程 虚拟机安装ubuntu安装 ubuntu更新软件 ubuntu一直卡在下载语言怎么办?...
查看>>
vi/vim的三种基本工作模式
查看>>
程维:滴滴希望未来出行选择和调用飞机一样方便
查看>>
windows中使用Git创建分支(branch)?
查看>>