android访问网络,下载图片,并设置UI
来源:互联网 发布:朋友圈算法 编辑:程序博客网 时间:2024/06/08 05:11
android从20008年的谷歌I/o大会上脱颖而出,在那个还是诺基亚独霸天下的时代,凭借其良好的用户体验,以及开源性,迅速获得了大批用户,最终干掉了诺基亚,同时也将我们从功能机时代带到了智能机时代,android实现了从1.0到6.0的转变,版本之间的差距还是极大的。
好了,言归正传,今天介绍的事android下的访问网络图片的知识,其中一个要点就是和android版本有关!!在android2.3以前的版本,包括2.3,android访问网络的代吗是可以放在主线程的,而在android2.3以后就不可以了,我们必须将一些耗时操作放在子线程中,而且,必须声明一个Handler类,在子线程中将得到的数据发送给Handler类,然后在主线程中操作handler对象,从而实现对androidUI的刷新,android是不支持在子线程对主线程进行刷新的
代码范例:
package com.example.httpweb;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import android.annotation.SuppressLint;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.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;public class MainActivity extends Activity implements OnClickListener{protected static final int SUCCESS = 0;private Button send;private EditText _url;private ImageView image;private Handler handler=new Handler(){@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubsuper.handleMessage(msg);if(msg.what==SUCCESS){image.setImageBitmap((Bitmap) msg.obj);}}}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); send=(Button) findViewById(R.id.send); _url=(EditText) findViewById(R.id._url); image=(ImageView) findViewById(R.id.image); }public void onClick(View v) {// TODO Auto-generated method stubfinal String url=_url.getText().toString();new Thread(new Runnable(){@Overridepublic void run() {// TODO Auto-generated method stub//设置消息发送给主线程Message message=new Message();message.obj=getBitmapFromNet(url);message.what=0;handler.sendMessage(message);}}).start();}private Bitmap getBitmapFromNet(String string) {HttpURLConnection conn = null;try {URL mURL = new URL(string);// 创建一个url对象// 得到http的连接对象conn = (HttpURLConnection) mURL.openConnection();conn.setRequestMethod("GET");// 设置请求方法为Getconn.setConnectTimeout(10000);// 设置连接服务器的超时时间, 如果超过10秒钟, 没有连接成功, 会抛异常conn.setReadTimeout(5000);// 设置读取数据时超时时间, 如果超过5秒, 抛异常conn.connect();// 开始链接int responseCode = conn.getResponseCode(); // 得到服务器的响应码if(responseCode == 200) {// 访问成功InputStream is = conn.getInputStream();// 获得服务器返回的流数据Bitmap bitmap = BitmapFactory.decodeStream(is); // 根据 流数据 创建一个bitmap位图对象return bitmap;} else {Log.d("my", "访问失败: responseCode = " + responseCode);}} catch (Exception e) {e.printStackTrace();} finally {if(conn != null) {conn.disconnect();// 断开连接}}return null;} }如果在主线程中,在android2.3以下机器可以正常运行,而在android2.3以上则会报错 adroid.os。。。。。。。。。。。。。。!!
亲身经历,在几乎快要崩溃的边缘,顿悟出来
0 0
- android访问网络,下载图片,并设置UI
- android通过网络下载图片并设置为桌面
- Android开发之异步下载网络图片并显示到UI界面
- android 通过http网络下载图片 并
- android下载网络图片并缓存
- android下载网络图片并显示
- android下载网络图片并缓存
- android下载网络图片并缓存
- android下载网络图片并缓存
- android下载网络图片并缓存
- android下载网络图片并缓存
- android下载网络图片并缓存
- android网络下载图片并缓存
- android下载网络图片并缓存
- android下载网络图片并缓存
- android下载网络图片并缓存
- android加载网络图片,并下载
- android-下载保存网络图片并显示下载进度条
- 系统调用和函数调用
- 二分法查找和快速排序 二分法是分治算法的一种特殊形式,利用分治策略求解时,所需时间取决于分解后子问题的个数、子问题的规模大小等因素,而二分法,由于其划分的简单和均匀的特点,是查找数据时经常采用的一种有
- Metasploit入门
- oracle 10g数据库备份与还原总结(转载)
- error LNK2019: 无法解析的外部符号_cvReleaseImage,该符号在函数_main 中被引用
- android访问网络,下载图片,并设置UI
- [知其然不知其所以然-10] linux dmi table matching
- ios 常见github资料
- 《启示录》阅读笔记(六)——产品探索+产品原则
- Appium 处理滑动
- 剑指Offer-29-数组出现次数超过一半的数字-基于Partition函数的O(n)算法
- EAR项目构建的几种方式
- oracle管理归档日志文件
- PHP SAPI