控制Loading时间的AsyncTask

原创 2015年11月20日 20:48:15

最近写Android项目时,使用到了AsyncTask, 发现在WIFI情况下,请求网络的速度太快,导致Loading的对话框或者下拉刷新的一闪而过,这样给用户的效果似乎不理想,然后就想到了给这个加载过程加一个Sleep时间,于是就添加上,但突然发现使用到AsyncTask的地方比较,遂决定改写了一下AsyncTask, 以下是代码,还是比较简单的。


public abstract class BaseAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {

	private long MIN_LOADING_TIME = 2000;

	@Override
	protected Result doInBackground(Params... params) {
		Result result = null;
		long startTime, endTime;
		startTime = System.currentTimeMillis();
		result = doWorkInBackground(params);
		endTime = System.currentTimeMillis();
		if ((endTime - startTime) < getMinLoadingTime()) {
			try {
				Thread.sleep(getMinLoadingTime() - (endTime - startTime));
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		return result;
	}

	protected long getMinLoadingTime() {
		return MIN_LOADING_TIME;
	}

	protected abstract Result doWorkInBackground(Params... params);

}


版权声明:本文为博主原创文章,未经博主允许不得转载。

Android中使用AsyncTask实现文件下载以及进度更新提示

科技优家 2016-12-20 03:15 Android提供了一个工具类:AsyncTask,它使创建需要与用户界面交互的长时间运行的任务变得更简单。相对Handler来说AsyncTask更...
  • u011277123
  • u011277123
  • 2017年01月10日 09:11
  • 850

AsyncTask你真的用对了吗?

在之前的文章深入探究了Handler,《从Handler.post(Runnable r)再一次梳理Android的消息机制(以及handler的内存泄露)》我们知道了Android的消息机制主要靠H...
  • ly502541243
  • ly502541243
  • 2016年08月26日 16:40
  • 6812

为什么Android的AsyncTask不适合执行长时间操作的任务

Android API中有提到,AsyncTask非常适合短时间异步操作。如果要执行长时间操作,最好使用线程池Executor: AsyncTasks should ideally be use...
  • HGuang_ZJH
  • HGuang_ZJH
  • 2014年11月26日 17:00
  • 6183

AsyncTask 坑 (二) AsyncTask对象生命周期

当我第一次看到AsyncTask的调用代码时候,我第一感就有个疑问。 @Override protected void onCreate(Bundle savedInstanceSt...
  • zj510
  • zj510
  • 2016年05月25日 16:38
  • 1388

AsyncTask 坑(一) 哪些线程可以调用AsyncTask

看到很多文章说,只有主线程(UI线程)可以创建AsyncTask。个人觉得这个说法不对。从AsyncTask的角度讲,任何线程都可以创建并且使用AsyncTask。之所以会有主线程才能创建AsyncT...
  • zj510
  • zj510
  • 2016年05月24日 20:40
  • 1843

安卓开发之消息机制和AsyncTask实现的基本原理

一、基本概述 在Android中,只可以在UiThread(UI主线程)才可以直接更新界面,不然会抛出异常。 WHY: 防止多个线程来修改界面,导致混乱 ...
  • cxmscb
  • cxmscb
  • 2016年07月08日 20:36
  • 1091

02_AsyncTask泛型含义

AsyncTask的泛型含义     泛型含义   private class MyAsyncTask extends AsyncTask {} 我们刚刚说了有三个泛型的 Void,Vo...
  • qq_33781658
  • qq_33781658
  • 2016年04月11日 22:04
  • 579

AsyncTask的缺陷和问题

在Android开发中,AsyncTask可以使得用户避免直接使用Thread类和Handler 来处理后台操作,适用于需要异步处理数据并将数据更新到界面上的情况。AsyncTask适用于后台操作只有...
  • goodlixueyong
  • goodlixueyong
  • 2015年05月21日 20:09
  • 17419

译文:Android中糟糕的AsyncTask之停止AsyncTask操作

译文:Android中糟糕的AsyncTask NOV 8TH, 2014 AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合。其实AsyncTask...
  • u011484134
  • u011484134
  • 2015年10月30日 18:44
  • 1686

AsyncTask的doInBackground方法延迟执行的问题

今天发现一个很奇葩的bug,当使用asyncTask去执行后台下载任务时发现其他的接口都不好用了,一直在加载中,debug发现doInBackground方法不执行,要等到下载任务完成才会正常执行。。...
  • qq707548235
  • qq707548235
  • 2016年11月23日 15:17
  • 528
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:控制Loading时间的AsyncTask
举报原因:
原因补充:

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