Android模仿jquery异步请求
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异步请求的更多相关文章
- jQuery异步请求(如getJSON)跨域解决方案
相信大家在使用jQuery异步请求非自己网站内相对资源(通过别人站点上的URL直接读取)使经常会遇到如下错误吧,实际上这些错误都是浏览器安全机制“搞的鬼”,才让我们开发路上遇到了拦路虎. 当你直接在浏 ...
- jQuery异步请求模拟IE登录网站
具体请求的登录验证页面后台逻辑处理,这里我们忽略,不在我们的学习范围内:关键的是使用jQuery异步请求方法,如下例子: <%@ Page Language="C#" Aut ...
- 实现在Android简单封装类似JQuery异步请求
在android开发中经常会使用异步请求数据,通常会使用handler或者AsyncTask去做,handler 配合message 使用起来比较麻烦,AsyncTask 线程池只允许128个线程工作 ...
- Android简单封装类似JQuery异步请求
在android开发中经常会使用异步请求数据,通常会使用handler或者AsyncTask去做,handler 配合message 使用起来比较麻烦,AsyncTask 线程池只允许128个线程工作 ...
- Android 的图片异步请求加三级缓存 ACE
使用xUtils等框架是很方便,但今天要用代码实现bitmapUtils 的功能,很简单, 1 AsyncTask请求一张图片 ####AsyncTask #####AsyncTask是线程池+han ...
- Jquery异步请求简单实例(转)
本文引用自Xingsoft. 一.Jquery向aspx页面请求数据 前台页面JS代码: $("#Button1").bind("click&qu ...
- Jquery异步请求数据实例
一.Jquery向aspx页面请求数据 前台页面JS代码: $("#Button1").bind("click", function () { $.ajax({ ...
- Jquery异步请求数据实例代码
一.Jquery向aspx页面请求数据 前台页面JS代码: 代码如下: $("#Button1").bind("click", function () { $. ...
- jQuery异步请求ajax()之complete参数详解
请求完成后回调函数 (请求success 和 error之后均调用).这个回调函数得到2个参数:XMLHTTPRequest) 对象和一个描述请求状态的字符串("success", ...
随机推荐
- Http协议学习小结
1.Http基本概述: HTTP(hypertext transport protocol),即超文本传输协议.这个协议详细规定了浏览器和万维网服务器之间互相通信的规则. HTTP就是一个通信规则,通 ...
- javascript 知识点坑
1. JavaScript事件属性 event.target 当目标事件发生span里面 当目标事件发生在main里面 e.target; // 目标节点DOM结构 e.target.id; // ...
- URL与URI的区别
URI—Universal Resource Identifier通用资源标志符Web上可用的每种资源如HTML文档.图像.视频片段.程序等都是一个来URI来定位的URI一般由三部组成①访问资源的命名 ...
- 关于Web安全的链接文章
1.CSRF(跨站请求伪造) http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html 2.深入理解JavaScript Hijacki ...
- python 下的数据结构与算法---1:让一切从无关开始
这段时间把<Data Structure and Algorithms with python>以及<Problem Solving with Algorithms and Dat ...
- Android-操作栏之选项菜单
回答第一个问题:什么是选项菜单?答:选项菜单就是可以显示在操作栏上的菜单. 菜单的视图需要建立在res/menu下. 其中,showAsAction属性用于指定菜单选项是显示在操作栏还是隐藏到溢出菜单 ...
- C# window 窗体 保持最前显示
两句话搞定 [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern int SetWind ...
- C语言初学 if-else语句判断俩数的最大值
#include<stdio.h> main() { float a,b; printf("输入俩个任意实数\n"); scanf("%f%f",& ...
- C语言---return(我的工程笔记本)
迷惑了一天 函数就是输出有问题,进入函数设置密码的时候,当我保存密码准备返回,问题就在此时诞生了,界面是主界面,但功能函数还是没反应,设置序列号初始值的原来按键却还是有反应,莫名其妙,莫名其妙... ...
- NSNumber与NSInteger的区别 -bei
基本类型,如同C 语言中的 int 类型一样,拿来就可以直接用. 而类在使用时,必须先创建一个对象,再为对象分配空间,接着做初始化和赋值. 类的初始化,需用类自身的方法 (类方法). 代码中所创建的对 ...