Android简单封装类似JQuery异步请求
来源:互联网 发布:网络诈骗罪怎么报警 编辑:程序博客网 时间:2024/05/22 18:24
在android开发中经常会使用异步请求数据,通常会使用handler或者AsyncTask去做,handler 配合message 使用起来比较麻烦,AsyncTask 线程池只允许128个线程工作,会有溢出的问题,(当然一般情况不会有那么多线程同时工作的)所以写了这个代码,还望高手指正!
[Java]代码 package com.xbl.task; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; public class JQuery { private static final String KEY = "key"; private static String TAG = "JQuery"; private static final int N = 5;// 5个工人 private static final Executor worker = Executors.newFixedThreadPool(N);// 线程池 private static final Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { TaskListener listener = (TaskListener)msg.obj; Object result = msg.getData(); if(listener !=null ){ listener.callBack(result); } destory(); } }; private JQuery(){ } public static void execute(final String url,final TaskListener listener){ worker.execute(new Runnable() { @Override public void run() { String result = null; try { result = WebUtil.get(url); } catch (Exception e) { Log.e(TAG, e.getMessage()); } Message msg = new Message(); Bundle data = new Bundle(); data.putSerializable(KEY, result); msg.setData(data); msg.obj = listener; handler.sendMessage(msg); } }); } //销毁线程 private static void destory() { if (worker != null && worker instanceof ExecutorService) { ExecutorService es = (ExecutorService) worker; if (!es.isShutdown()) { es.shutdown(); } } } public interface TaskListener{ public void callBack(Object result); } /** * * 不必太在意此处代码,只是示例 * */ public static class WebUtil{ public static String get(String url) throws Exception{ InputStream inputStream = new URL(url).openStream(); StringBuilder strBuilder = new StringBuilder(); BufferedReader reader = new BufferedReader(newInputStreamReader(inputStream)); for (String s = reader.readLine(); s != null; s = reader.readLine()) strBuilder.append(s); inputStream.close(); return strBuilder.toString(); } } }[代码] [Java]代码 //调用方法: JQuery.execute("http://weather.news.qq.com/inc/minisite_125.js", newJQuery.TaskListener() { @Override public void callBack(Object result) { TextView t = new TextView(TaskDemoActivity.this); t.setText(String.valueOf(result)); LinearLayout layout = (LinearLayout)findViewById(R.id.layout1); layout.addView(t); } });
0 0
- Android简单封装类似JQuery异步请求
- Android简单封装类似JQuery异步请求
- Android简单封装类似JQuery异步请求代码
- android Http异步请求封装
- jquery下简单异步请求
- Android模仿jquery异步请求
- Android异步请求通用封装类
- Android网络请求简单封装
- AJAX异步请求封装
- android http多请求异步封装对你绝对有用
- android http多请求异步封装对你绝对有用
- Android之封装好的异步网络请求框架
- 封装类似jQuery的选择器
- JQuery发送异步请求
- JQuery ajax异步请求
- jquery异步请求
- jquery ajax异步请求
- jquery异步http请求
- 三层架构(我的理解及详细分析)
- [Cocoa]深入浅出 Cocoa 之 Core Data(1)- 框架详解
- 传统企业网站拥有很大的SEO改善空间
- android 常用系统信息获取总结
- 浅谈对主成分分析(PCA)算法的理解
- Android简单封装类似JQuery异步请求
- [Cocoa]深入浅出 Cocoa 之 Core Data(2)- 手动编写代码
- 第四次练习赛解题报告及标程
- 大型电子商务网站架构之--分布式可扩展数据库架构
- Java NIO系列教程(四) Selector
- MFC 子对话框中得到主对话框指针
- WinSCP:How to sudo through a startup message?
- 与小米一起布局硬件
- 4.STL算法