消息机制 →网络图片查看器
来源:互联网 发布:网络中两台计算机重名 编辑:程序博客网 时间:2024/05/17 01:44
1. 子线程利用handler发送一条消息,消息被放在主线程的消息队列里面
2. 主线程里面有一个looper消息的轮询器
3. 如果轮询器发现了新的消息,调用handlemessage的方法处理消息
MainActivity
package org.gentry.readpicture;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.text.TextUtils;import android.view.View;import android.widget.EditText;import android.widget.ImageView;import android.widget.Toast;public class MainActivity extends Activity {protected static final int CHANGE_UI = 1;protected static final int ERROR = 2;private EditText et_path;private ImageView iv;// 1. 主线程创建消息处理器(handler)private Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {if (msg.what == CHANGE_UI) {Bitmap bitmap = (Bitmap) msg.obj;iv.setImageBitmap(bitmap);} else if (msg.what == ERROR) {Toast.makeText(MainActivity.this, "显示图片失败", Toast.LENGTH_LONG).show();}};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);et_path = (EditText) findViewById(R.id.et_path);iv = (ImageView) findViewById(R.id.iv);}public void click(View view) {final String path = et_path.getText().toString().trim();if (TextUtils.isEmpty(path)) {Toast.makeText(this, "图片路径不能为空", Toast.LENGTH_SHORT).show();} else {// 放在子线程里面执行(子线程不能更改主线程的UI)new Thread() {public void run() {// 连接服务器get请求获取图片try {URL url = new URL(path);// 根据url发送http请求HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 设置请求的方式conn.setRequestMethod("GET");conn.setConnectTimeout(5000);// conn.setReadTimeout(5000);conn.setRequestProperty("User-Agent","Mozilla/4.0(compatible;MAIE 6.0; Windows NT 5.1; SV1; .NET4.OC; .NET4.OE; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Shuame)");// 得到服务器返回的响应码int code = conn.getResponseCode();if (code == 200) {InputStream is = conn.getInputStream();Bitmap bitmap = BitmapFactory.decodeStream(is);// iv.setImageBitmap(bitmap);// TODO 告诉主线程一个消息,帮我更改界面。内容:bitmapMessage msg = new Message();msg.what = CHANGE_UI;msg.obj = bitmap;handler.sendMessage(msg);} else {Message msg = new Message();msg.what = ERROR;handler.sendMessage(msg);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();Message msg = new Message();msg.what = ERROR;handler.sendMessage(msg);}};}.start();}}}
0 0
- 消息机制 →网络图片查看器
- Android -- 网络图片查看器,网络html查看器, 消息机制, 消息队列,线程间通讯
- android消息机制之网络图片查看器
- 安卓笔记之网络图片查看器小程序以及消息处理机制运用
- 子线程网络图片查看器和Handler消息处理器
- 网络图片查看器(子线程与消息传递)
- 子线程网络图片查看器和Handler消息处理器
- 网络图片浏览器、handle机制、网页代码查看器
- 四、查看网络html源码和网络图片,handler消息机制及原理,get和post请求数据
- 网络图片查看器
- 网络图片查看器
- 网络图片查看器
- 网络图片查看器
- 网络图片查看器
- *******************网络图片查看器*************
- 网络图片查看器
- 网络图片查看器
- 网络图片查看器
- centos6.0安装中文输入法
- 微信怎么玩?看看你是不是微信的小白——利川百姓网
- 马士兵hql示例
- C++第十七天 复制控制
- HDU - 4791 Alice's Print Service
- 消息机制 →网络图片查看器
- 迷你播放器--第一阶段(1)--检索媒体音乐并添加到List播放列表
- jquery获得select option的值 和对select option的操作
- 查询表里是否有重复某个字段的数据
- hello,world.
- Java抽象类与接口的区别
- 微信怎么玩?看看你是不是微信的小白——利川百姓网
- 1 pc 2 tomcat servers
- 菜鸟的安卓实习之路---Intent的几个用处