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
原创粉丝点击