1. 程式人生 > >Android 異步下載

Android 異步下載

write oncreate emp getheight widget throw java.net async view

package com.example.demo1;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import com.tiffdecoder.TiffDecoder;

import android.app.Activity;
import android.graphics.Bitmap;
import
android.os.AsyncTask; import android.widget.ImageView; public class DownloadImagesTask extends AsyncTask<Object, Void, Bitmap> { ImageView imageView = null; Activity activity = null; @Override protected Bitmap doInBackground(Object... parameters) { this.imageView = (ImageView)parameters[0];
this.activity = (Activity)parameters[1]; try { return download_Image((String)imageView.getTag()); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Bitmap result) { if
(result != null) imageView.setImageBitmap(result); } private Bitmap download_Image(String url) throws IOException { File file = downloadFile(url); TiffDecoder.nativeTiffOpen(file.getPath()); int[] pixels = TiffDecoder.nativeTiffGetBytes(); Bitmap mBitmap = Bitmap.createBitmap(pixels, TiffDecoder.nativeTiffGetWidth(), TiffDecoder.nativeTiffGetHeight(),Bitmap.Config.ARGB_8888); TiffDecoder.nativeTiffClose(); return mBitmap; } private File downloadFile(String strUrl) throws IOException { URL url = new URL(strUrl); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setDoOutput(true); urlConnection.connect(); File file = File.createTempFile("myfile", ".tif", this.activity.getCacheDir()); if(file.exists()) file.delete(); file.createNewFile(); FileOutputStream fileOutput = new FileOutputStream(file); InputStream inputStream = urlConnection.getInputStream(); byte[] buffer = new byte[1024]; int bufferLength = 0; while ( (bufferLength = inputStream.read(buffer)) > 0 ) { fileOutput.write(buffer, 0, bufferLength); } fileOutput.close(); return file; } }
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        StrictMode.setThreadPolicy(new 
                StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
                        StrictMode.setVmPolicy(
                new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
        
                        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        ImageView image = (ImageView)this.findViewById(R.id.image);
        image.setTag("http://xibei1-image.xxx.com/00006009b4673bbc-ff2a-49bd-91fe-764c01b2acce01.tif");
        new DownloadImagesTask().execute(image,this);
    }
}

Android 異步下載