代码内容

package com.example.day13;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Handler;import android.os.HandlerThread;import android.os.Looper;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.ImageView;import java.io.BufferedInputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;public class MainActivity extends AppCompatActivity implements View.OnClickListener {         ImageView imageView;    private HandlerThread handlerThread;    private HttpHandler handler;    private final int DOWNLOAD = 1;    @Override    protected void onCreate(Bundle savedInstanceState) {             super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        imageView = findViewById(R.id.img);        findViewById(R.id.downLoad).setOnClickListener(this);        handlerThread = new HandlerThread("handlerThread");        handlerThread.start();        //让handler消息运行在子线程        handler = new HttpHandler(handlerThread.getLooper());    }    @Override    public void onClick(View v) {             switch (v.getId()){                 case R.id.downLoad:                handler.sendEmptyMessage(DOWNLOAD);                break;        }    }    private void downloadFile() {             String downLoadUrl = "http://i0.hdslb.com/bfs/article/535c9cc9cde7dc2f858fe99aecaf921285f71786.jpg";        String savePath = "/sdcard/flower.jpg";        File file = new File(savePath);        if (file.exists()){                 file.delete();        }        try {                 URL url = new URL(downLoadUrl);            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();            urlConnection.setRequestMethod("GET");            urlConnection.setConnectTimeout(5000);            urlConnection.setReadTimeout(5000);            urlConnection.setDoInput(true);            urlConnection.connect();            if (urlConnection.getResponseCode() == 200){                     InputStream in = urlConnection.getInputStream();                BufferedInputStream bis = new BufferedInputStream(in);                FileOutputStream fos = new FileOutputStream(savePath);                byte[] bytes = new byte[1024];                int len = 0;                while ((len = bis.read(bytes))!=-1){                         fos.write(bytes,0,len);                }                //强制把数据写入磁盘                fos.flush();                bis.close();                fos.close();            }            Bitmap bitmap = BitmapFactory.decodeFile(savePath);            imageView.setImageBitmap(bitmap);        } catch (Exception e) {                 e.printStackTrace();        }    }    public class HttpHandler extends Handler{             public HttpHandler(Looper looper) {                 super(looper);        }        @Override        public void handleMessage(Message msg) {                 super.handleMessage(msg);            switch (msg.what){                     case DOWNLOAD:                    downloadFile();                    break;            }        }    }}

更多相关文章

  1. Android线程安全问题分析与解决
  2. java 获取当前所有线程的两种方法 group和map
  3. Android版的模拟交通灯
  4. 发生android.view.ViewRoot$CalledFromWrongThreadException异常
  5. Android下SD卡文件操作与数据读写
  6. Android深入浅出之Audio 第二部分 AudioFlinger分析
  7. 关于Android(安卓)SQLite3多线程并发问题
  8. android开发每日汇总【2011-10-09】
  9. Android中的多线程机制

随机推荐

  1. webview 5.0以上 图片不显示问题
  2. Android(安卓)Studio 蓝牙配对
  3. 猜红心小游戏
  4. 多点触摸测试
  5. Using threads and ProgressDialog
  6. Chapter 2 Navigating Android(安卓)Stud
  7. Android网络开启、关闭整理
  8. Porting Libusb for Android(安卓)on the
  9. android fragment动态显示隐藏
  10. SnackBar学习记录