Android 网络编程 初级入门(一)

原创 2015年11月17日 22:05:09

网络图片的下载

前几天刚把Tomcat服务器搭建好,就开始学习Android 网络编程,在参考了部分资料后,终于实现了网络图片的查看。下面就把整个过程记录一下,方便自己复习,也给需要者提供参考。

点击“下载图片”按钮,实现图片的下载,先看一下效果图:

这里写图片描述

布局文件很简单,Button和ImageView,就不介绍了。

  1. 点击按钮的程序如下:
public void click(View v){
        //开启子线程
        Thread thread = new Thread(){
            @Override
            public void run() {
                // TODO Auto-generated method stub
                super.run();
                //前提是搭建Tomcat 确定网址 下载图片
                String path ="http://192.168.56.1:8080/sea.jpg";
                try {
                    //把网址封装成url对象
                    URL url = new URL(path);
                    //获取连接对象,不过此时还没有建立连接
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    //初始化
                    conn.setRequestMethod("GET");
                    conn.setReadTimeout(10000);
                    conn.setReadTimeout(10000);
                    //发送请求,建立连接
                    conn.connect();
                    //响应码为200,说明请求成功
                    if (conn.getResponseCode() == 200) {
                        //得到返回的数据流
                        InputStream is = conn.getInputStream();
                        //读取数据流,构造位图
                        Bitmap bm = BitmapFactory.decodeStream(is);
                        //构造消息,传递给子线程
                        Message msg = new Message();
                        msg.obj = bm;
                        //设置请求成功  标志
                        msg.what = 1;
                        //发送消息 到主线程 的消息队列中
                        handler.sendMessage(msg);
                    }else{
                        Message msg = handler.obtainMessage();
                        msg.what = 0;
                        handler.sendMessage(msg);
                    }                   
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }   
            }

        };
        //开启线程
        thread.start();     
    }

2.子线程要想刷新Ui,需要利用主线程中的Handler处理子线程发过来的消息。

static Handler handler = new Handler(){
        //主线程调用,根据子线程的请求,刷新UI
        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            super.handleMessage(msg);
            // 请求成功或失败 做出处理
            switch (msg.what) {
            case 1:
                //显示位图 图像
                iv.setImageBitmap((Bitmap)msg.obj);
                break;
            case 0:
                Toast.makeText(ma, "请求失败", 0).show();
                break;

            }
        }   
    };

需要注意的地方:

1.在AndroidManifest.xml中添加网络权限。

<uses-permission android:name="android.permission.INTERNET"/>


2. startup 服务器,即开启Tomcat,测试服务器的正常使用。

这里写图片描述

3.关于刷新UI的问题:

刷新UI只能在主线程中完成,如果程序写在子线程,是没用的。

要想在子线程中刷新UI,需要使用消息队列机制。
这里写图片描述

关于子线程刷新ui的问题,有多种方法,可参考其他博主的文章,如
http://blog.csdn.net/olanmomo/article/details/40040569

程序源码下载:http://download.csdn.net/detail/shangguanyunlan/9278161

版权声明:本文为博主辛苦整理文章,转载请注明出处:http://blog.csdn.net/shangguanyunlan

Java Socket网络编程初级入门

事实上网络编程简单的理解就是两台计算机相互通讯数据而已,对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了,Java SDK提供一些相对简单的Api来完成这些工作。Socket...
  • j315321
  • j315321
  • 2012年08月21日 10:16
  • 236

Java Socket网络编程初级入门

  • 2010年08月15日 16:46
  • 39KB
  • 下载

打印机编程 - 初级入门篇

具体步骤: 获得打印机DC(设备环境句柄).开始打印(StartDoc).开始一页(StartPage).对DC进行绘图操作,就像往窗口上画图一样。结束一页(EndPage).结束打印(EndD...
  • ITDeng
  • ITDeng
  • 2012年03月16日 22:34
  • 1507

Sqlite3编程初级入门

#include "sqlite3.h" // DATABASE NAME #define DB_SQLITE3_TEST_FULLNAME "test.db" // TABLE NAM...
  • ypist
  • ypist
  • 2012年02月24日 21:04
  • 1360

学习笔记-神经网络初级入门

1. 写作背景——刚学到的知识如果不及时记录下来,很快就会被遗忘。从上个月开始我就开始在Coursera平台学习吴恩达老师开设的深度学习课程。今天我已经学完第一门课程,并已经获得证书。这门课程不像之前...

ADO数据库编程详解(C++)----初级入门篇

一、概述         ADO即Microsoft ActiveXData Object,是Microsoft继ODBC之后,基于OLE DB技术的一种数据库操作技术,使您能够编写通过...

Java初级入门之 Two 编程中的基本概念

本章介绍一些编程中的基本概念,比如:变量、常量、运算符、标识符等。这些是编程中的“砖块”,是编程的基础。 要想开始正式编程,还需要再学“控制语句”,控制语句就像“水泥”,可以把“砖块”粘到一起,最终形...

Android嵌入式开发之NDK初级入门 粘贴可用阅读可懂

Android嵌入式开发之NDK初级入门 粘贴可用阅读可懂

android 初级入门

一、Android 学习资源        ■官方文档 ,  如android.com        ■开发者社区   ,如android.eoe.cn        ■开源社区,  如github ...

Android 开发初级入门.doc

  • 2012年03月16日 09:07
  • 687KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 网络编程 初级入门(一)
举报原因:
原因补充:

(最多只允许输入30个字)