Android AsyncTask异步机制用法
2016-07-26 20:34
465 查看
package com.example.administrator.myapplication; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.media.tv.TvContract; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import javax.xml.transform.Result; public class MainActivity extends AppCompatActivity { private Button button; private ImageView imageView; String string = "http://img1.imgtn.bdimg.com/it/u=2647695598,824525199&fm=21&gp=0.jpg"; //图片网址 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.myButton); imageView = (ImageView) findViewById(R.id.myImageView); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { shuchu("点击了按钮"); //点击按钮改变图片 new idea(imageView).execute(string); //传入ImagineView和网络地址 } }); } public class idea extends AsyncTask<String, Double, Bitmap> {//第一个是传入参数,第二个是进度,第三个是结果 private ImageView ima; private Bitmap bit; public idea(ImageView ima) { this.ima = ima; } @Override protected void onPostExecute(Bitmap bitmap) { ima.setImageBitmap(bitmap); //后台执行完毕的结果 } @Override protected Bitmap doInBackground(String... strings) { URL imageUrl = null; shuchu("开始联网"); try { imageUrl = new URL(string); } catch (MalformedURLException e) {//后来执行 e.printStackTrace(); } try { HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection(); conn.connect(); InputStream is = conn.getInputStream(); bit = BitmapFactory.decodeStream(is); is.close(); } catch (IOException e) { e.printStackTrace(); } shuchu("结束联网"); return bit; } } public void shuchu(String s) { Log.v("a", s); } }
相关文章推荐
- ruby实现的一个异步文件下载HttpServer实例
- C#异步绑定数据实现方法
- 科学知识:同步、异步、阻塞和非阻塞区别
- 探讨Ajax中同步与异步之间的区别
- C#中异步回调函数用法实例
- C#实现异步GET的方法
- C#异步下载文件
- C#异步执行任务的方法
- 简单实现C#异步操作
- 使用Promise解决多层异步调用的简单学习心得
- 深入理解JavaScript编程中的同步与异步机制
- Jquery异步提交表单代码分享
- JQuery异步获取返回值中文乱码的解决方法
- jQuery通过deferred对象管理ajax异步
- Highcharts使用简例及异步动态读取数据
- Ajax异步上传文件实例代码分享
- Node.js 的异步 IO 性能探讨
- Ajax异步(请求)提交类 支持跨域
- Ajax实现异步用户名验证功能
- Ajax简单的异步交互及Ajax原生编写