Thread+Handler的简单例子
来源:互联网 发布:航天信息开票软件 编辑:程序博客网 时间:2024/05/16 17:31
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">现在我比较喜欢用Thread+Handler,暂时觉得还挺方便的,这个例子只是简单的网路下载一张图片,然后展示而已</span>
自定义一个Thread的子类:
主要的作用是去网络获取数据:
private class DownloadImageThread extends Thread {private String url_path;public DownloadImageThread(String url_path) {this.url_path = url_path;}@Overridepublic void run() {super.run();HttpURLConnection conn = null;InputStream is = null;try {URL url = new URL(url_path);conn = (HttpURLConnection) url.openConnection();is = conn.getInputStream();Bitmap bmp = BitmapFactory.decodeStream(is);/** 封装消息 */Message msg = handler.obtainMessage();msg.what = 1;msg.obj = bmp;/** 发送消息 */handler.sendMessage(msg);} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {if (is != null) {is.close();}} catch (IOException e) {e.printStackTrace();}if (conn != null) {conn.disconnect();}}}}
Handler的子类:
public class ImageHandler extends Handler {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);/**判断消息的不同来处理不同消息*/switch (msg.what) {case 1:Bitmap bmp = (Bitmap) msg.obj;iv.setImageBitmap(bmp);break;}}}
平时都会出错,经常因为快捷键,所以常把那个HttpUrlConnection类给写成HttpsURLConnection
这个要注意了:
整体的代码很简单(老是忘记加权限了):
public class MainActivity extends Activity {private ImageView iv;private ImageHandler handler;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initUI();handler = new ImageHandler();new DownloadImageThread("http://f.hiphotos.baidu.com/image/w%3D1280%3Bcrop%3D0%2C0%2C1280%2C720/sign=8aa1bdb5af345982c58ae19034c40ace/6c224f4a20a44623148b8ca39a22720e0df3d7a9.jpg").start();}private void initUI() {iv = (ImageView) findViewById(R.id.iv);}private class DownloadImageThread extends Thread {private String url_path;public DownloadImageThread(String url_path) {this.url_path = url_path;}@Overridepublic void run() {super.run();HttpURLConnection conn = null;InputStream is = null;try {URL url = new URL(url_path);conn = (HttpURLConnection) url.openConnection();is = conn.getInputStream();Bitmap bmp = BitmapFactory.decodeStream(is);/** 封装消息 */Message msg = handler.obtainMessage();msg.what = 1;msg.obj = bmp;/** 发送消息 */handler.sendMessage(msg);} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {if (is != null) {is.close();}} catch (IOException e) {e.printStackTrace();}if (conn != null) {conn.disconnect();}}}}public class ImageHandler extends Handler {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);/**判断消息的不同来处理不同消息*/switch (msg.what) {case 1:Bitmap bmp = (Bitmap) msg.obj;iv.setImageBitmap(bmp);break;}}}}
0 0
- Thread+Handler的简单例子
- 一个简单的例子解析android中Handler线程和普通Thread的使用
- Android-Handler, Thread, Runnable的简单应用
- boost Thread 最简单的小例子
- Handler简单例子
- Android Handler简单例子
- 简单的介绍Thread与Handler的原理
- Looper, MessageQueue, Handler, thread关系的简单描述
- Handler小例子(非常简单的handler例子,适合初学者,高手勿喷)
- 一个简单的使用Pipe和thread的例子
- Android入门(5)最简单的Handler例子
- Android入门(5)最简单的Handler例子
- Android初学习 - Handler使用的简单例子
- java线程的简单例子(Thread and runnable)
- Android Handler Runnable Message Thread 简单用法
- android的Handler 例子
- Handler、HandlerThread、Thread的区别
- Handler与Thread的关系
- First day
- OmniPeek 基础之协议分析
- Linux shell重定向
- 第十一周项目6--回文数
- 忽略警告
- Thread+Handler的简单例子
- Android的自定义按钮
- 图的广度优先查找(BFS: Breadth -First Search) (1)问题分析 BFS的策略是尽可能广泛地搜索图。它首先访问所有和初始顶点邻接的顶点,然后访问距离它两条边的所有未
- Load Balancing Scheduling Methods Explained
- Tree
- word的编写模式和ie主页被篡改问题
- linux下更新Python版本并修改默认版本
- 最长公共子序列 【微软面试100题 第五十六题】
- Cocos2dx 3.0 过渡篇(十七) std::bind与CC_CALLBACK不得不说的故事