异步任务——AsyncTask的使用
来源:互联网 发布:python 最小值 索引 编辑:程序博客网 时间:2024/04/26 07:20
一、AsyncTask子类的参数
AsyncTask<Parms,Progress,Result> 是一个抽象类,通常用于被继承,继承AsyncTask需要指定如下三个泛型参数:
1、Params:启动任务时输入参数的类型
2、Progress:后台任务执行中返回进度值的类型
3、Result:后台执行任务完成后返回结果的类型
MyAsyncTask.java继承自AsyncTask
import android.os.AsyncTask;public class MyAsyncTask extends AsyncTask<Void, Void, Void> {/** * 必须重写,异步执行后台线程将要完成的任务 */@Overrideprotected Void doInBackground(Void... params) {// TODO Auto-generated method stubreturn null;}/** * 执行后台耗时操作前被调用,通常用户完成一些初始化操作 */@Overrideprotected void onPreExecute() {// TODO Auto-generated method stubsuper.onPreExecute();}/** * 当doInBackground()完成后,系统会自动调用该方法, * 并将doInBackground方法的返回值传递给该方法 */@Overrideprotected void onPostExecute(Void result) {// TODO Auto-generated method stubsuper.onPostExecute(result);}/** * 在doInBackground()方法中调用publishProgress()方法更新任务的执行进度后 * 就会触发该方法 */@Overrideprotected void onProgressUpdate(Void... values) {// TODO Auto-generated method stubsuper.onProgressUpdate(values);}}该异步任务的调用
//启动该异步任务 MyAsyncTask myAsyncTask = new MyAsyncTask(); myAsyncTask.execute();接下来展示一个从网络下载图片的异步任务MainActivity.java
import java.io.BufferedInputStream;import java.io.IOException;import java.net.MalformedURLException;import java.net.URLConnection;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;import android.os.Bundle;import android.view.View;import android.widget.ImageView;import android.widget.ProgressBar;public class MainActivity extends Activity {private ImageView mImageView;private ProgressBar mProgressBar;private static String URL = "http://img5.duitang.com/uploads/item/201508/10/20150810183747_8TuAK.jpeg";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.fragment_main);mProgressBar = (ProgressBar) findViewById(R.id.pb);mImageView = (ImageView) findViewById(R.id.iv);// 启动该异步任务MyAsyncTask asyncTask = new MyAsyncTask();asyncTask.execute(URL);}class MyAsyncTask extends AsyncTask<String, Void, Bitmap> {/** * 执行后台耗时操作前被调用,通常用户完成一些初始化操作 */@Overrideprotected void onPreExecute() {super.onPreExecute();mProgressBar.setVisibility(View.VISIBLE);}/** * 必须重写,异步执行后台线程将要完成的任务 */@Overrideprotected Bitmap doInBackground(String... params) {Bitmap bitmap = null;String url = params[0];URLConnection connection;try {connection = new java.net.URL(url).openConnection();BufferedInputStream bis = new BufferedInputStream(connection.getInputStream());bitmap = BitmapFactory.decodeStream(bis);bis.close();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return bitmap;}/** * 当doInBackground()完成后,系统会自动调用该方法, 并将doInBackground方法的返回值传递给该方法 */@Overrideprotected void onPostExecute(Bitmap result) {super.onPostExecute(result);mProgressBar.setVisibility(View.GONE);mImageView.setImageBitmap(result);}/** * 在doInBackground()方法中调用publishProgress()方法更新任务的执行进度后 就会触发该方法 */@Overrideprotected void onProgressUpdate(Void... values) {// TODO Auto-generated method stubsuper.onProgressUpdate(values);}}}MainActivity的布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/iv" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <ProgressBar android:id="@+id/pb" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:visibility="gone" /></RelativeLayout>
1 0
- 异步任务——AsyncTask的使用
- 异步任务AsyncTask的使用
- AsyncTask异步任务的使用
- 异步任务——AsyncTask
- 异步任务——AsyncTask
- 异步任务——AsyncTask
- 异步任务AsyncTask使用
- 异步任务AsyncTask使用
- Android异步任务之AsyncTask的使用
- Android 异步任务 AsyncTask 的使用总结
- Android 异步任务AsyncTask的使用
- 异步任务AsyncTask的便利使用
- 异步任务AsyncTask的使用参考
- AsyncTask异步任务类的使用
- Android中异步任务AsyncTask的使用
- Android AsyncTask异步任务的使用
- Android 异步任务AsyncTask的使用
- 异步任务加载网络数据——AsyncTask使用
- 开启事务后hibernate缓存自动更新数据到数据库?
- linux之nginx优化之自身优化
- Knockout应用开发指南(完整版) 目录索引
- LeetCode之Find Peak Element
- 表单元素的css样式,自适应屏幕
- 异步任务——AsyncTask的使用
- JAVA类集
- Java锁的种类以及辨析——自旋锁的其他种类
- Android插件实例——360 DroidPlugin详解
- 【bzoj2705】【sdoi2012】【longge的问题】【欧拉函数】
- jsonp跨域请求
- Knockout应用开发指南 第一章:入门
- CAD控件:易语言使用控件二次开发入门
- 为关联容器编写插入迭代器