开线程池在子线程下载,用接口回调与Handler返回结果
来源:互联网 发布:淘宝客怎么推广产品 编辑:程序博客网 时间:2024/06/05 11:10
(1)定义一个接口,用于返回结果
public interface DataBack {public void passData(byte[] result);}
(2)定义一个类,用户封装下载操作
public class HttpUtils {// 开线程池private static Executor executor = Executors.newFixedThreadPool(4);// 使用接口回调private DataBack dataBack;// 使用handle发、接信息private Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {if(msg.what == 411){dataBack.passData((byte[]) msg.obj);}};};public void getDataFromServer(final String uri, DataBack dataBack) {this.dataBack = dataBack;// 执行线程池executor.execute(new Runnable() {@Overridepublic void run() {HttpClient client = new DefaultHttpClient();try {HttpResponse response = client.execute(new HttpGet(uri));if (response.getStatusLine().getStatusCode() == 200) {byte[] result = EntityUtils.toByteArray(response.getEntity());// 从子线程发送结果数据到主线程Message msg = new Message();msg.what = 411;msg.obj = result;handler.sendMessage(msg);}} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}});}}
(3)写完一个功能记得要先测试
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 测试测试new HttpUtils().getDataFromServer(ServerApi.HAND_URI, new DataBack() {@Overridepublic void passData(byte[] result) {String json = new String(result);Log.v("TAG", json);//Toast.makeText(MainActivity.this, json, 0).show();}});}}
0 0
- 开线程池在子线程下载,用接口回调与Handler返回结果
- 在线程里开线程
- 利用Handler在主线程与子线程之间互发消息,handler详解
- Handler详解系列——利用Handler在主线程与子线程之间互发消息,handler详解
- Handler详解系列(四)——利用Handler在主线程与子线程之间互发消息,handler详解
- 在Service中新开线程和直接新开线程的区别与意义
- 在Service中新开线程和直接新开线程的区别与意义
- 在Service中新开线程和直接新开线程的区别与意义
- 子线程handler与handlerThread
- 利用Handler在主线程与子线程之间互发消息
- Handler详解系列(四)——利用Handler在主线程与子线程之间互发消息
- Handler、子线程下载图片-笔记
- Java5中线程池与线程结果返回
- 子线程与主线程通过Handler进行通信
- Android,UI主线程与子线程 handler,thread使用
- 子线程与主线程通信之Thread-Handler-Message
- handler 主线程与子线程之间的通信
- 如何在子线程中创建Handler?
- windows 查看端口占用情况
- App 审核加速通道
- 第二课 | 第二节 | CSS样式选择符
- Java中Comparable和Comparator实现对象比较
- fastjson的用法及介绍
- 开线程池在子线程下载,用接口回调与Handler返回结果
- 蓝桥杯-07-随机算法的应用
- 【无浪】全排列实现之二
- js中如何声明变量
- 第二课 | 第三节 | 块属性标签和行内属性标签及样式优先级
- ACM-高精度模板
- Linux下默认的目录介绍
- git - 撤消操作
- ios客户端学习-颜色将16位值转换成rgb值,UIColor与字符串互转