the code as below:
MainActivity.java
package tw.brad.android.book.MyAsyncTask; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.TextView; public class MainActivity extends Activity { private View start, end, rm_pic; private TextView mesg; private MyMealTime task; private ImageView imView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); start = findViewById(R.id.start); rm_pic = findViewById(R.id.rm_pic); end = findViewById(R.id.end); mesg = (TextView) findViewById(R.id.msg); imView = (ImageView)findViewById(R.id.ImageView01); start.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { task = new MyMealTime(); //傳遞多個參數給AsyncTask運作處理 task.execute("http://spaceflightnow.com/news/n0211/04soho/sun.jpg"); } }); rm_pic.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 提早結束AsyncTask Bitmap tmp = BitmapFactory.decodeResource(getResources(), R.drawable.photo_not_available); //setImageBitmap=> Sets a Bitmap as the content of this ImageView.是设置其内容 imView.setImageBitmap(tmp); //setBackgroundResource => Set the background to a given resource.是设置背景 // imView.setBackgroundResource(R.drawable.photo_not_available); } }); end.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 提早結束AsyncTask if (task != null && !task.isCancelled()) { task.cancel(true); } } }); } private class MyMealTime extends AsyncTask< String, Integer, String > { private String[] name; private boolean isOver; int i; @Override protected String doInBackground(String... names) { i=0; name = names; Log.e("name[0]",name[0]); downloadFile(name[0]); while(true){ try { publishProgress(i++); Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 暫停休眠 if(i>5){ break; } // 如果提早結束 if (isCancelled()) { break; } } return null; } @Override protected void onCancelled() { super.onCancelled(); } @Override protected void onPostExecute(String result) { super.onPostExecute(result); // 將接收執行結束厚的結果參數顯示在使用者介面 imView.setImageBitmap(bmImg); } @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(); mesg.setText( values[0]+ " sec " ); if(bmImg!=null){ imView.setImageBitmap(bmImg); } } } private Bitmap bmImg=null; private Bitmap downloadFile(String fileUrl){ URL myFileUrl =null; try { myFileUrl= new URL(fileUrl); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { HttpURLConnection conn= (HttpURLConnection)myFileUrl.openConnection(); conn.setDoInput(true); conn.connect(); int length = conn.getContentLength(); int[] bitmapData =new int[length]; byte[] bitmapData2 =new byte[length]; InputStream is = conn.getInputStream(); bmImg = BitmapFactory.decodeStream(is); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return bmImg; } }
activity_main.xml
沒有留言:
張貼留言