AsyncTask异步类的简单操作
package com.example.day9;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils; import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
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.Button;
import android.widget.ImageView; public class MainActivity extends Activity { private Button bt1;
private ProgressDialog dialog;
private String url="http://b.hiphotos.baidu.com/image/w%3D2048/sign=0240c37eb0119313c743f8b051000dd7/e4dde71190ef76c6f6ecf6979f16fdfaaf51674b.jpg";
private ImageView imageView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.imageView=(ImageView)super.findViewById(R.id.iv);
this.dialog=new ProgressDialog(this);
this.dialog.setTitle("提示框");
this.dialog.setMessage("正在下载图片..");
this.bt1=(Button)super.findViewById(R.id.bt1);
this.bt1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
new ImageDowload().execute(url);
}
}); }
public class ImageDowload extends AsyncTask<String, Void, Bitmap>{
//第一个参数为任务,这里指的是下载链接
//第二个参数是进度,一般是Integer
//第三个参数是执行结果返回类型,这里是图片
public Bitmap doInBackground(String... arg0) {
// 耗时操作在这里执行,参数为任务类型,这里是指下载链接(String)
HttpClient client=new DefaultHttpClient();
HttpGet httpGet=new HttpGet(arg0[0]);
Bitmap bitmap=null;
Log.i("lcw", arg0[0]);
try {
HttpResponse httpResponse = client.execute(httpGet);
if(httpResponse.getStatusLine().getStatusCode()==200){
Log.i("www", httpResponse+"");
HttpEntity entity=httpResponse.getEntity();
byte data[]=EntityUtils.toByteArray(entity);
bitmap=BitmapFactory.decodeByteArray(data, 0, data.length);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return bitmap;
} @Override
public void onPostExecute(Bitmap result) {
// 最后操作,更新UI操作
super.onPostExecute(result);
Log.i("11111111", "eeee");
MainActivity.this.imageView.setImageBitmap(result);
dialog.dismiss();
} @Override
public void onPreExecute() {
// 最早操作,预处理动作
super.onPreExecute();
MainActivity.this.dialog.show();
} } }
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context="com.example.day9.MainActivity"
tools:ignore="MergeRootFrame" > <ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/> <Button
android:id="@+id/bt1"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_alignParentBottom="true"
android:text="点击下载图片"
/> </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.day9"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.INTERNET"/> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.day9.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> </manifest>
效果图如下:
AsyncTask异步类的简单操作的更多相关文章
- Android中的AsyncTask异步任务的简单实例
在 Android中的AsyncTask异步任务的简介 一文中.已经对 安卓 异步任务操作做了简单的介绍.这里,直接将上文中的异步任务做了一个实例.实现异步操作更新UI线程,相比开启子线程更新来说逻辑 ...
- 【转】c# 类反射简单操作
转:http://www.jb51.net/article/25863.htm 首先建立一个测试的类 复制代码代码如下: public class MyClass { public int one ...
- Android中异步类AsyncTask的理解
这里有两种解释的方法,各有侧重点: 第一种解释: Async Task 简介:AsyncTask的特点是任务在主线程之外运行,而回调方法是在主线程中执行,这就有效地避免了使用Handler带来的麻烦 ...
- C#反射技术的简单操作(读取和设置类的属性)
public class A { public int Property1 { get; set; } } static void Main(){ A aa = new A(); Type type ...
- 使用AsyncTask异步更新UI界面及原理分析
概述: AsyncTask是在Android SDK 1.5之后推出的一个方便编写后台线程与UI线程交互的辅助类.AsyncTask的内部实现是一个线程池,所有提交的异步任务都会在这个线程池中的工作线 ...
- Android中AsyncTask异步
今天我们学习了 AsyncTack, 这是一个异步任务. 那么这个异步任务可以干什么呢? 因为只有UI线程,即主线程可以对控件进行更新操作.好处是保证UI稳定性,避免多线程对UI同时操作. 同时要把耗 ...
- Android中使用Thread线程与AsyncTask异步任务的区别
最近和几个朋友交流Android开发中的网络下载问题时,谈到了用Thread开启下载线程时会产生的Bug,其实直接用子线程开启下载任务的确是很Low的做法,那么原因究竟如何,而比较高大上的做法是怎样? ...
- Android线程管理之AsyncTask异步任务
前言: 前面几篇文章主要学习了线程以及线程池的创建与使用,今天来学习一下AsyncTask异步任务,学习下AsyncTask到底解决了什么问题?然而它有什么弊端?正所谓知己知彼百战百胜嘛! 线程管理相 ...
- 【转】【C#】C# 5.0 新特性——Async和Await使异步编程更简单
一.引言 在之前的C#基础知识系列文章中只介绍了从C#1.0到C#4.0中主要的特性,然而.NET 4.5 的推出,对于C#又有了新特性的增加--就是C#5.0中async和await两个关键字,这两 ...
随机推荐
- linux跑火车的命令sl
http://forum.ubuntu.org.cn/viewtopic.php?t=250890 ubuntu下可以通过 apt-get install sl 安装.执行sl会出来什么呢?帖一下: ...
- 基于html5海贼王单页视差滚动特效
分享一款基于html5海贼王单页视差滚动特效是一款流行滑落网页特效代码.效果图如下: 在线预览 源码下载 实现的代码: <div class="top"> < ...
- laravel中facade serviceprovider的理解
一个serviceprovider就是一个解决某个功能的公用模块,实际上可以直接用在di里注册然后从di中取出,为啥还要搞个facade呢? 有几个方面的原因 1.把实例化移入到serviceprov ...
- Sphinx/Coreseek 4.1的安装流程
yum install mysql-devel libxml2-devel expat-devel cd /data/software/ wget http://www.coreseek.cn/upl ...
- open source Swift, Objective-C and the next 20 years of development
Q&AApple's Craig Federighi talks open source Swift, Objective-C and the next 20 years of develop ...
- C# switch-case中的或(or)操作
今天需要在switch中添加一个条件,类似if中的 " || “操作 switch(var) { : : ... break; : : ... break; ... } 这样条件2 5会执行 ...
- Android——Android Studio导入SlidingMenu类库的方法
Android Studio导入SlidingMenu类库的方法(其他类库应该也适用) 本篇文章主要介绍了"Android Studio导入SlidingMenu类库的方法(其他类库应该 ...
- PHP——大话PHP设计模式——链式操作
- 安装corel x8提示你已安装了另外一个版本
如果之前安装了其他版本,提示安装不进去,需卸载visual c++ 2015 redistributable(x64)即可(测试环境是安装了x6后,x8安装不了) windows install cl ...
- WmS具体解释(二)之怎样理解Window和窗体的关系?基于Android7.0源代码
上篇博客(WmS具体解释(一)之token究竟是什么?基于Android7.0源代码)中我们简要介绍了token的作用,这里涉及到的概念非常多,当中出现频率最高的要数Window和窗体这一对搭档了,那 ...