AsyncTask 异步任务 + ProgressDialog 进度条对话框

原创 2016年08月31日 09:06:28
一, 什么是异步任务


    使用子线程执行耗时的操作, 然后通过回调把结果返回给主线程




二, 为什么要使用异步任务


1, android 使用线程的规则:


1.1  主线程(UI线程)不能被阻塞, 不能执行耗时的操作


1.2  子线程(非UI线程)可以执行耗时的操作, 它不能操作UI线程


2, Handler是线程间的通信, 将子线程的数据传递给主线程显示


  Android已经实现了这种线程间的通信, 这个类就是AsyncTask








三, 如何使用异步任务


1, 定义一个类,继承AsyncTask, 同时声明3个泛型


public class MyTask extends AsyncTask<Params,Progress,Result>


没有返回类型: Void


第一个泛型:   子线程执行任务的请求参数类型


第二个泛型:   子线程执行任务的进度


第三个泛型:   子线程执行任务的结果返回类型


2, 重写核心的方法(4个)


//运行在主线程中, 负责初始化的工作(进度条对话框的初始)
protected void onPreExecute()


//运行在子线程中,执行耗时的操作
protected byte[]  doInBackground(String... Params)
{
//将当前的下载进度发布到ui线程中, 执行此方法后, 系统自动调用onProgressUpdate
publishProgress(int progress);
}


//运行在主线程中, 实时更新进度条
protected void onProgressUpdate(Integer... values)




//运行在主线程中, 更新UI (在doInBackground()方法执行后, 由系统自动调用)
protected void onPostExecute(byte[] result)




3, 启动异步任务(必须在主线程中启动)


new MyTask().execte(String... Params);


4, 在主线程中取消异步任务


myTask.cancel(true);






四, ProgressDialog  进度条对话框


包含了ProgressBar的对话框


有两种展示方式:  模糊的, 精确的


ProgressDialog pd = new ProgressDialog();


pd.setIcon(R.drawable.f001);


pd.setTitle("设置标题");


pd.setMessage("设置内容");


pd.setCancelable(true/false);//设置是否可撤销,默认为true 可撤销的


pd.show();//显示对话框  (加载数据之前)


pd.dismiss();// 对话框消失 (加载数据结束)





五, 设置控件是否可见


1, 属性
android:visibility = ""


属性值:  visible  可见
 
invisible  不可见(控件看不见, 但是位置依然占用)


gone       不可见(不占用当前位置)


2, 代码


progressBar.setVisibility(View.GONE);


View.VISIBLE


View.INVISIBLE


View.GONE
进度条类型 在xml中 写style?Android




六  AsyncTask注意事项


1,  必须在UI线程中得到AsyncTask的对象


2,  必须在UI线程中启动异步任务


3,  重新父类的4个核心方法, 这些方法都是系统自动调用, 不需要手动调用


4,  每个AsyncTask 的实例只能被使用一次, 不能重复使用,否则会抛出异常


5,  如果异步任务获取的数据需要和用户交互, 则使用, 否则开启线程

Android开发:在AsyncTask中使用Dialog出现的问题

方案一: Android排错:has leaked window com.android.internal.policy.impl.PhoneWindow$ that was origi...

Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案

转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/37936275 1、概述 众所周知,Activity在不明确指定屏幕方向和conf...

关于AsyncTask异步下载图片带有进度条更新

首先定义一个ImageView 和一个Button:

AsyncTask异步加载图片 进度条显示进度 -- Android学习之路

AsyncTask 异步加载网络图片 并使用进度条显示进度 这里我还使用了Thread方式进行加载 作为比较...

[android 多线程]一些帖子与文章ProgressDialog, AsyncTask, Thread

ProgressDialog, AsyncTask, Thread
  • dadoneo
  • dadoneo
  • 2011年03月24日 22:32
  • 2883

Pro Android学习笔记(九四):AsyncTask(3):ProgressDialog

文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件。转载须注明出处:http://blog.csdn.net/flowingflying/ 小例子 通过简单的菜单,触发一个用sl...

文件下载之使用AsyncTask并在进度对话框中显示下载进度

这种方式的优势是你可以在后台执行下载任务的同时,也可以更新UI(这里我们用progress bar来更新下载进度) 1,新建Activity,并在onCreate方法中定义对话框并绑定相应的事件 //...

Android带进度条的文件上传,使用AsyncTask异步任务

AsyncTask是抽象类,子类必须实现抽象方法doInBackground(Params... p),在此方法中实现任务的执行工作,比如联网下载或上传。AsyncTask定义了三种泛型类型Param...
  • yx0628
  • yx0628
  • 2013年08月19日 09:59
  • 7962

异步任务 AsyncTask 进度条的更新

进度条的更新问题 创建工程  activity_main.xml  布局文件代码
  • LTG01
  • LTG01
  • 2015年10月11日 11:12
  • 1839

使用AsyncTask弹出进度条ProgressDialog,利用网上的某音乐地址下载歌曲

有些时候,在你编写程序的时候某种控件不经常使用就会忘记怎么使用。就像AsyncTask、ProgressDialog、网络下载数据等。所以,我就有意的把这些东西记录下来,以免它们从我的生活中淡出! ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AsyncTask 异步任务 + ProgressDialog 进度条对话框
举报原因:
原因补充:

(最多只允许输入30个字)