Android简单封装类似JQuery异步请求

在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            @Override
25            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                @Override
41                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                    @Override
04                    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                });

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299784.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你爱我吗? | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅(图源你这样真的很机车诶,侵权删)

Java开发和嵌入式开发该如何选择

首先,Java开发和嵌入式开发都是目前IT行业内比较常见的开发岗位,也都有大量的从业人员,所以从就业的角度来看,学习Java开发和嵌入式开发都是不错的选择。Java语言的应用领域包括Web开发、Android开发和大数据开发等领域&#xff0…

合理支配“财富”:经理人运用时间的12种典型模式

1. 他们大部分时间用于与人交往。总经理们个人单独工们的时间仅占整个工作时间的24% 。这部分时间通常是他们在家里、飞机上或外出乘车时间。总经理中仅有两人(弗兰克和波林)与别人交往的时间不超过其工作时间总量的70 %。绝大多数总经理都将…

小米和腾讯的.NET笔面试题哪个更难?可自测附答案

统计了下,当下正在招.NET的大厂有腾讯、京东、唯品会、阿里、百度、华为、小米、网易、特斯拉等。进大厂、拿高薪、享福利,应该是.NET程序员普世梦想了。金九银十将至,还不赶紧刷题准备?即使等金三银四,下面这些笔面试…

hdu 1879 继续畅通工程 (最小生成树)

继续畅通工程 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 12717 Accepted Submission(s): 5506 Problem Description省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一…

熬夜变傻有科学依据,人类睡觉时会被“洗脑”,科学家首次拍下全程

全世界只有3.14 % 的人关注了青少年数学之旅你睡着的时候,真的被洗了脑。这次,波士顿大学的科学家们,史无前例地拍下了清洗过程:红色是血液,蓝色是脑脊液。厉害的是从前没有发现过,血液会周期性地大量流出大…

【解决bug之路】JAVA 之 static

在Java语言中,static表示“静态”的意思,使用场景可以用来修饰成员变量和成员方法,当然也可以是静态代码块。static的主要作用在于创建独立于具体对象的域变量或者方法。本文主要来去讲解一下static的来龙去脉。 static要解决什么问题&#…

将Linux加入Windows域

Samba3.0以上的版本提供了加入WindowsPDC域的命令net join,现在用它把Samba Server加入WindowsPDC,例如snoopy.echo是WindowsPDC域:net rpc join -S snoopy.echo -U Administrator,然后输入域管理员密码,也就是windows…

程序员的人生

今天在网上看到这么一张图片,让人吃惊不小,我也是一名典型的学生出身的程序员在这个行业做了也接近三年了,也曾经犹豫过,曾经迷茫过,曾经思考过自己以后的人生,也是几乎和下面这张图片的经历一致&#xff0…

WPF中一个通用的BoolToXXX转换类

在WPF程序的数据绑定里面,经常会通过一个布尔类型的值来控制UI控件的状态,例如是否可见,是否最大化之类的。然而UI控件的各个状态属性的类型往往不是布尔类型,比如UIElement.Visibility的类型是Visibility枚举,Window.…

Cisco常用命令

Switch(config)#snmp-server community c2960 ro #设置snmp只读服务 Switch(config)#snmp-server enable traps #打开snmp陷阱 Switch(config)#snmp-server host 192.168.1.1 traps c2960 #指定接收traps信息的主机和共同体名 Switch(config)#logging on #启动logging机制 Sw…

到家自动充电,拜拜充电线!东京大学开发自动充电房间,能量成为“与空气一样的东西”...

全世界只有3.14 % 的人关注了青少年数学之旅每天下班回家第一件事,是不是给手机充电?但是充电线在哪,你找得到吗?如果现在告诉你,一回到家,手机就能自动充电,简直就是整理苦手的救星&#xff01…

JS图片放大查看效果!

http://bbs.blueidea.com/thread-2812683-1-1.htmlhttp://bbs.blueidea.com/thread-2814846-1-1.html应用效果<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><title>Javascript Images zoom-out view sample.…

从零开始学习jQuery (九) jQuery工具函数 【转】

一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍. 我们经常要使用脚本处理各种业务逻辑, 最常见的就是数组和对象的操作. jQuery工具函数为我们操作对象和数组提供了便利条件. 二.前言 大…

java获取整点与凌晨的时间戳

Java中获取整点时间戳 在实际的开发过程中&#xff0c;前端给后端传时间的时候&#xff0c;有时候传的是整点数值&#xff0c;比如&#xff1a;timeList[00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]&#xff0c;这样传值给后端获取时间带了…

设计模式之装饰器

装饰器模式介绍俄罗斯套娃装饰器的核心就是在不改原有类的基础上给类新增功能。可以避免继承导致的子类过多&#xff0c;可避免AOP带来的复杂性。装饰器主要解决的是直接继承下因功能的不断横向扩展导致子类膨胀的问题&#xff0c;而是用装饰器模式后就会比直接继承显得更加灵活…

zookeeper集群部署监控与选举同步流程等工作原理

部署一个zookeeper集群&#xff0c;要多简单就能有多简单&#xff08;下载压缩包&#xff0c;解压&#xff0c;修改配置文件zoo.cfg,执行启动脚本&#xff09;&#xff0c;但是想要真的把这套东西玩好了&#xff0c;还是需要费些功夫研究一番的。就跟自己搭建一个lnmp的站点&am…

手把手教出欧拉!数学界最伟大的老师惨遭全网歪曲抹黑,奇葩说陈铭一句话揭露真相.........

全世界只有3.14 % 的人关注了青少年数学之旅说到伟大的老师你首先想到的是谁&#xff1f;万世师表的孔子&#xff1f;古代先哲亚里士多德&#xff1f;支援山区的青年教师&#xff1f;还是高三时每天在你耳边督促你订正错题本的班主任&#xff1f;在这个光荣的行列中&#xff0c…

让你一周变聪明的大脑保健操

我们现在的年轻人生活节奏快&#xff0c;压力大&#xff0c;有时或多或少&#xff0c;有些跟不上节奏&#xff0c;这样更多的人就应该多重视一下自己的大脑&#xff0c;现在有一个这样的方法不知道是不是切合实际&#xff0c;希望大家能从中学到些自己有用的东西。 英国广播公司…

Hello Blazor:(8)启用深色模式

前言上次&#xff0c;在“集成Tailwind CSS”时&#xff0c;我发现tailwind.config.js配置文件有这样一个选项&#xff1a;darkMode: false, // or media or class查看官方文档&#xff0c;原来这是用来启用深色模式的配置。既然深色模式几乎成了所有网站和软件的标配&#xff…