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 }

2. [代码][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             });

Android模仿jquery异步请求的更多相关文章

  1. jQuery异步请求(如getJSON)跨域解决方案

    相信大家在使用jQuery异步请求非自己网站内相对资源(通过别人站点上的URL直接读取)使经常会遇到如下错误吧,实际上这些错误都是浏览器安全机制“搞的鬼”,才让我们开发路上遇到了拦路虎. 当你直接在浏 ...

  2. jQuery异步请求模拟IE登录网站

    具体请求的登录验证页面后台逻辑处理,这里我们忽略,不在我们的学习范围内:关键的是使用jQuery异步请求方法,如下例子: <%@ Page Language="C#" Aut ...

  3. 实现在Android简单封装类似JQuery异步请求

    在android开发中经常会使用异步请求数据,通常会使用handler或者AsyncTask去做,handler 配合message 使用起来比较麻烦,AsyncTask 线程池只允许128个线程工作 ...

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

    在android开发中经常会使用异步请求数据,通常会使用handler或者AsyncTask去做,handler 配合message 使用起来比较麻烦,AsyncTask 线程池只允许128个线程工作 ...

  5. Android 的图片异步请求加三级缓存 ACE

    使用xUtils等框架是很方便,但今天要用代码实现bitmapUtils 的功能,很简单, 1 AsyncTask请求一张图片 ####AsyncTask #####AsyncTask是线程池+han ...

  6. Jquery异步请求简单实例(转)

    本文引用自Xingsoft. 一.Jquery向aspx页面请求数据 前台页面JS代码:             $("#Button1").bind("click&qu ...

  7. Jquery异步请求数据实例

    一.Jquery向aspx页面请求数据 前台页面JS代码: $("#Button1").bind("click", function () { $.ajax({ ...

  8. Jquery异步请求数据实例代码

    一.Jquery向aspx页面请求数据 前台页面JS代码: 代码如下: $("#Button1").bind("click", function () { $. ...

  9. jQuery异步请求ajax()之complete参数详解

    请求完成后回调函数 (请求success 和 error之后均调用).这个回调函数得到2个参数:XMLHTTPRequest) 对象和一个描述请求状态的字符串("success", ...

随机推荐

  1. 利用ESLint检查代码质量

    1. ESLint ESLint 是一个插件化的 javascript 代码检测工具,它可以用于检查常见的 JavaScript 代码错误,也可以进行代码风格检查,这样我们就可以根据自己的喜好指定一套 ...

  2. Java程序性能分析工具Java VisualVM(Visual GC)—程序员必备利器

    VisualVM 是一款免费的\集成了多个JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成和分析海量数据.跟踪内存泄漏.监控垃圾回收 ...

  3. hdu 2033

    水题 AC代码: #include <iostream> using namespace std; int main() { int i,j,n,k,a[100],b[100]; cin& ...

  4. Oracle数据库中的blob类型解析

    Oracle的Blob字段比较特殊,他比long字段的性能要好很多,可以用来保存例如图片之类的二进制数据. 写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cursor,你必须 ...

  5. Codeforces Round #279 (Div. 2)f

    树形最大上升子序列 这里面的上生子序列logn的地方能当模板使  good #include<iostream> #include<string.h> #include< ...

  6. TCP/IP 要点备忘

    1. 3次握手/4次挥手过程,以及状态变化: 2. RTT,TTL,TOS(8位服务类型,最小延时.最大吞吐.最高可用.最小费用). 3. TimeWait(2msl)状态,防止最后一个ack丢失 4 ...

  7. [leetcode][042] Trapping Rain Water (Java)

    我在Github上新建了一个解答Leetcode问题的Project, 大家可以参考, 目前是Java 为主,里面有leetcode上的题目,解答,还有一些基本的单元测试,方便大家起步. 题目在这里: ...

  8. [Mugeda HTML5技术教程之2] Mugeda HTML5富媒体平台简介

    [Mugeda HTML5技术教程之2] Mugeda HTML5动画平台简介 摘要:Mugeda提供基于云的平台,供开发人员和设计人员快速的开发.发布和统计基于HTML5的,包含丰富动画和交互的移动 ...

  9. jquery1.9学习笔记 之选择器(基本元素三)

    标签选择器("element") 描述: 选择所有与给出标签名相匹配的元素. 同功能的JS原生方法:getElementByTagName() 例子:  查找每个div元素. &l ...

  10. OCR中的倾斜矫正

    电面中被问到了做的LPR,简单的介绍了下后又问到了关于如何矫正倾斜角的问题.答得比较含糊,所以今天来补充一下. 倾斜矫正的方法有很多种,包括基于Hough变换的矫正,基于字符投影的倾角矫正,常规线性角 ...