方法中调用publishProgress时会触发该方法,通常用于处理过程中刷新进度条 onPostExecute : 在doInBackground执行完毕时调用,通常用于处理完毕后刷新展示页面 onCancelled...注意,只有水平进度条才能设置当前进度,圆圈进度无法设置当前进度 样式设置方式为,在xml布局文件的ProgressBar增加如下的style属性: style="?...下面是ProgressDialog的常用方法(与ProgressBar同名的方法见上面,就不重复列了): show : 显示对话框。需要在各属性设置完成后再调用show方法。...isShowing : 判断对话框是否显示 dismiss : 关闭对话框。...静态show : 简化ProgressDialog的操作代码,一句代码就搞定进度对话框的设置与显示。可指定标题和消息内容,进度条样式为默认的圆圈进度。
但是在子线程中无法去操作主线程(UI 线程),在子线程中操作UI线程会出现错误。因此android提供了一个类Handler来在子线程中来更新UI线程,用发消息的机制更新UI界面,呈现给用户。...三、构建AsyncTask子类的回调方法 1..execute(Params... params),执行一个异步任务,需要我们在代码中调用此方法,触发异步任务的执行。 ...2.onPreExecute:执行后台耗时操作前被调用,通常用户完成一些初始化操作,可以在这里显示进度对话框。 ...用于显示任务执行的进度。 6、onCancelled(),在用户取消线程操作的时候调用。在主线程中调用onCancelled()的时候调用。 几个方法是有规律的。 ...()中手动执行,更新任务的进度。
(进度条对话框显示下载进度的展现方式) 涉及技术点: 1、ProgressDialog 进度条对话框 用于显示下载进度 2、AsyncTask ...异步任务的使用 耗时操作不能再主线程中进行 安卓开发_浅谈AsyncTask 3、File 文件相关操作 将文件的字节数据生成文件...(s); //到这里说明下载完成,判断文件是否存在,如果存在,执行安装apk的操作 } } (1)、 局部变量 ProgressDialog 用于显示下载进度...this.progressDialog = progressDialog; } (3)、进度更新方法,将下载进度现在在对话框中 @Override protected...,并关闭进度对话框 不存在的话说明文件下载失败,进行相关提示即可 @Override protected void onPostExecute(String
,用于进行一些界面上的初始化操作,比如显示一个进度条对话框等。...注意,在这个方法中是不可以进行 UI 操作的,如果需要更新 UI 元素,比如说反馈当前任务的执行进度,可以调用 publishProgress(Progress...)方法来完成。...返回的数据会作为参数传递到此方法中,可以利用返回的数据来进行一些 UI 操作,比如说提醒任务执行的结果,以及关闭掉进度条对话框等。...一般为了后台实时更新进度条,泛型只会设置为AsyncTask其中Integer用来更新进度条,在onProgressUpdate()中使用此方法: ?...因为只能传一个参数给onProgressUpdate(),使用String[]数组作为中间的参数: AsyncTask 然后通过把其中代表进度的字符串转为int
这些都是我们经常听到的词汇了,最常用的方法就是Thread+Handler的方法,今天就来聊聊另一个熟悉的Asynctask,或许你没有听过,别着急,通过本次(API23)的源码进行讲解,你就明白了。...} } } 进入某个Activity,Activity中需要的数据来自于网络或者其它耗时操作,可以在AsyncTask中onPreExecute完成一些准备操作。...比如上例中显示进度对话框;然后在doInBackground完成耗时操作, 在进行耗时操作时还能不时的通过publishProgress给onProgressUpdate中传递参数,然后在onProgressUpdate...比如上例更新进度条的进度;当耗时任务执行完成后,最后在onPostExecute进行设置控件数据更新UI等操作,例如隐藏进度对话框。...onPostExecute(result); 主要这里的调用是在handler的handleMessage中,所以是在UI线程中。
,甚至ANR,这些会使应用的用户体验变差,但是有时又的确需要执行这些耗时的任务,那么我们通常可以使用AsyncTask或者new Thread 来处理,这样把任务放入工作线程中执行,不会占用主线程的时间片..., "test"); 简单分析下 上面就是AsyncTask最简单的使用方法,我们上面重写的方法中,onInBackground方法运行在工作线程,其他的方法全部运行在主线程,另外它的运行方式Android...使用AsyncTask一点小技巧 我们以一个实例来说明,“点击按钮开始下载QQAndroid安装包,然后显示一个对话框来反馈下载进度”。...我们先初始化一个对话框,由于要显示进度,我们用Github上面一个能够显示百分比的进度条 NumberProgressbar,启动任务的按钮我们使用* circlebutton*,一个有酷炫动画的按钮,...1.先初始化进度条提示对话框。
概述 AsyncTask是一个抽象类,它是Android封装的一个轻量级异步操作的类。它可以在线程池中执行后台任务,然后把执行的进度和最终的结果传递到主线程,并在主线程中更新UI。...AsyncTask的核心方法 onPreExecute() 该方法会在后台任务开始执行前调用,并在 主线程执行。用于进行一些界面上的初始化操作,比如显示一个进度条对话框等。...这个方法在 子线程中运行,应该在这里处理所有的耗时任务。 任务执行结束,可以通过 return语句来返回任务执行的结果。...当在后台任务中调用 publishProgress(Progress…)后,这个方法就会马上被调用,方法中携带的参数是后台任务传过来的,该方法在 主线程运行,所以可以进行UI更新。...返回的数据会被作为该方法的参数传递过来,该方法是在 主线程中运行,可以利用返回的数据进行UI更新操作,如提醒任务执行的结果或关闭掉进度条对话框等。
---- Android3.0以及以后的版本中,禁止在主线程执行网络请求,否则会抛出异常,可见在UI线程中执行耗时操作是不推荐的行为。所以,在进行与耗时操作同步进行的操作时(即并行)使用多线程。...progressDialog.setTitle("任务正在进行中"); //设置对话框显示的内容 progressDialog.setMessage("...); //设置对话框的进度条是否显示进度 progressDialog.setIndeterminate(false); progressDialog.show...progressDialog.setProgress(values[0]); } } 这里在onPreExecute()方法中实现了初始化并显示进度对话框,在doBackground...()方法通过读文件、写文件完成下载任务,并调用publishProgress()方法发出更新进度,在onProgressUpdate()方法中执行更新进度,在onPostExecute()方法中销毁进度条对话框
Progress:后台任务执行时,如果需要在界面上显示当前的进度,则使用这里指定的泛型作为进度单位。 Result:当任务执行完毕后,如果需要对结果进行返回,则使用这里指定的泛型作为返回值类型。...经常需要去重写的方法有以下四个: onPreExecute() 这个方法会在后台任务开始执行之间调用,用于进行一些界面上的初始化操作,比如显示一个进度条对话框等。...返回的数据会作为参数传递到此方法中,可以利用返回的数据来进行一些UI操作,比如说提醒任务执行的结果,以及关闭掉进度条对话框等。...()方法中去执行具体的下载逻辑,在onProgressUpdate()方法中显示当前的下载进度,在onPostExecute()方法中来提示任务的执行结果。...mStatus = Status.RUNNING; //任务开始执行之间调用,用于进行一些界面上的初始化操作,比如显示一个进度条对话框等。
AsyncTask类 在Android中可以通过Thread+Handler实现多线程通信。...image.png AsyncTask是一个抽象类,它是由Android封装的一个轻量级异步类(轻量体现在使用方便、代码简洁),它可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线程中更新...image.png onPreExecute 会在后台任务开始执行之间调用,在主线程执行。常常用于进行一些界面上的初始化操作,比如显示一个进度条对话框等。...在这个方法中可以对UI进行操作,在主线程中进行,利用参数中的数值就可以对界面元素进行相应的更新。...返回的数据会作为参数传递到此方法中,可以利用返回的数据来进行一些UI操作,在主线程中进行,比如说提醒任务执行的结果,以及关闭掉进度条对话框等。 image.png
AsyncTask 基本使用 Params 在执行AsyncTask时需要传入的参数,可用于在后台任务中使用。...Progress 后台任务执行时,如果需要在界面上显示当前的进度,则使用这里指定的泛型作为进度单位。 Result 当任务执行完毕后,如果需要对结果进行返回,则使用这里指定的泛型作为返回值类型。... …… } 这里我们把AsyncTask的第一个泛型参数指定为Void,表示在执行AsyncTask的时候不需要传入参数给后台任务。...经常需要去重写的方法有以下四个: onPreExecute() 这个方法会在后台任务开始执行之间调用,用于进行一些界面上的初始化操作,比如显示一个进度条对话框等。...返回的数据会作为参数传递到此方法中,可以利用返回的数据来进行一些UI操作,比如说提醒任务执行的结果,以及关闭掉进度条对话框等。
1 ) AsyncTask实现的原理 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作 使用的优点:简单,快捷,过程可控 使用的缺点:...使用的优点:结构清晰,功能定义明确;对于多个后台任务时,简单,清晰 使用的缺点:在单个后台异步处理时,显得代码过多,结构过于复杂(相对性) 使用AsyncTask类最少要重写以下这两个方法:doInBackground...和onPostExecute 一个简单的小例子:(显示进度条) main.xml { /* * 这个方法会在后台任务开始执行之前调用,用于进行一些界面上的初始化操作, * 比如显示一个进度条对话框等。...* 返回的数据会作为参数传递到此方法中,可以利用返回的数据来进行一些UI 操作, * 比如说提醒任务执行的结果,以及关闭掉进度条对话框等。
即传入的参数类型 Progess:后台执行程序时,需要在界面上显示当前的进度,则使用这里指定的泛型作为进度单位。...即进度显示参数类型 Result:当任务执行完毕后,如果需要对结果进行返回,则使用这里指定的泛型作为返回值类型。...,用于进行一些界面上的初始化操作,比如显示一个进度条对话框等 protected abstract Result doInBackground(Params... params):抽象方法,必须重写的。...返回的数据会作为参数传递到此方法中,可以利用返回的数据来进行一些UI操作,比如说提醒任务执行的结果,以及关闭进度条对话框等。 ...在执行过程中可以调用publishProgress(Progress... values)来更新进度信息。
转自 http://my.oschina.net/jhao104/blog/681507 1、利用标准输出 先说一下文本系统的控制符: \r: 将光标移动到当前行的首位而不换行; \n:...示例代码如下: import sys from time import sleep def viewBar(i): """ 进度条效果 :param i: :return...2、tqdm模块 tqdm是一个快速、扩展性强的进度条工具库, 其githup地址: https://github.com/tqdm/tqdm (1)安装: 直接使用pip安装:
1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现...此方法在后台线程执行,完成任务的主要工作,通常需要较长的时间。在执行过程中可以调用publicProgress(Progress…)来更新任务的进度。...此方法在主线程执行,用于显示任务执行的进度。 onPreExecute() 这里是最终用户调用Excute时的接口,当任务执行之前开始调用此方法,可以在这里显示进度对话框。...参数对应AsyncTask中的第一个参数 * 这里的String返回值对应AsyncTask的第三个参数 * 该方法并不运行在UI线程当中,主要用于异步操作,所有在该方法中不能对UI...参数对应AsyncTask中的第三个参数(也就是接收doInBackground的返回值) * 在doInBackground方法执行结束之后在运行,并且运行在UI线程当中 可以对UI空间进行设置
今天分析android的异步线程类HandlerThread与IntentService,它们都是android系统独有的线程类,而android中还有另一个比较重要的异步线程类AsyncTask。...* 在主线程中执行,当后台任务的执行进度发生改变时, * 当然我们必须在doInBackground方法中调用publishProgress() * 来设置进度变化的值...: (1)onPreExecute(), 该方法在主线程中执行,将在execute(Params… params)被调用后执行,一般用来做一些UI的准备工作,如在界面上显示一个进度条。...方法中,可以做了一些准备工作,如显示进度圈,这里为了演示方便,进度圈在常态下就是显示的,同时,我们还锁定了CPU,防止下载中断,而在doInBackground方法中,通过HttpURLConnection...到此AsyncTask在不同android版本中的差异也分析的差不多了。
要知道View显示到界面上需要经历onMeasure、onLayout和onDraw三个过程,而View的宽高是在onLayout阶段才能最终确定的,而在Activity#onCreate中并不能保证View...用于进行一些界面上的初始化操作,比如显示一个进度条对话框等。 doInBackground(Params...) ...返回的数据会作为参数传递到此方法中,可以利用返回的数据来进行一些UI操作,在主线程中进行,比如说提醒任务执行的结果,以及关闭掉进度条对话框等。 ...还提供了onCancelled()方法,它同样在主线程中执行,当异步任务取消时,onCancelled()会被调用,这个时候onPostExecute()则不会被调用,但是要注意的是,AsyncTask...()方法中去执行具体的下载逻辑,在onProgressUpdate()方法中显示当前的下载进度,在onPostExecute()方法中来提示任务的执行结果。
底层是用Handler消息机制实现的。 在Android开发中,我们经常需要下载各种东西,为了给用户较好的体验,我们经常需要显示下载进度。今天我们用以这个为例子,来教大家怎样使用AsyncTak。...AsyncTask的主要几个方法 Void onPreExecute() 在task 任务开始执行的时候调用,在doInBackground(Params… params)方法之前调用,在主线程中执行...()方法执行完毕之后,会调用这个方法,是在主线程中执行的。...在Activity里面定义静态方法 把需要访问的View对象通过构造函数传递进来 采用接口回调机制 前面说到的三种方法,是可以做到AsyncTask与外界进行通讯的。但第一第二中方法明显不行。...同时,如果产品再更改需求,比如,从显示一个进度条ProgressDialog对话框,改成显示一个ProgressBar,我们只需要在 onProgress()里面做相应的修改就好了,在也不用去阅读DownloadTask
可以在该方法中做一些准备工作,如在界面上显示一个进度条。 doInBackground(Params…),将在onPreExecute 方法执行后马上执行,该方法运行在后台线程中。...onPostExecute(Result),在doInBackground 执行完成后,onPostExecute 方法将被UI thread调用,后台的计算结果将通过该方法传递到UI thread....* 很多时候,我们会在这里显示一个进度条啥的,以示后台正在 * 执行某项功能。...当然在执行过程中 * 我们可以每隔多少秒就调用一次publishProgress方法,更新 * 进度信息 */ @Override protected Object doInBackground...你可以在这里动态的改变进度条的进度,让用户知道 * 当前的进度。
领取专属 10元无门槛券
手把手带您无忧上云