`
zhangym124
  • 浏览: 338914 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

利用androidannotations的@Backgroud及@UiThread注解替换原生AsyncTask的写法

阅读更多

转载请注明 http://xuantan.iteye.com/admin/blogs/1826350

 

在android工程中,若想异步执行一个任务,可以继承AsyncTask<Param, Progress, Result>   类,并实现其中的回调方法即可。

如今,利用androidannotations的@Backgroud及@UiThread注解我们可以更轻松的做到这一点。

 

修改前代码如下:

 

....	
        @Override
	public void onStart() {
		super.onStart();
	
		new DownloadUsersTask().execute();
		
	}

	private class DownloadUsersTask extends AsyncTask<Void, Void, List<User>> {
		@Override
		protected void onPreExecute() {
			showLoadingProgressDialog();
		}
		
		@Override
		protected List<User> doInBackground(Void... params) {
			try{
				ResponseEntity<User[]> responseEntity = restApiService.getUsersByStatus();
				
				
				return Arrays.asList(responseEntity.getBody());
			} catch (Exception e) {
				Log.e(TAG,e.getMessage(),e);
			}
		
			return null;
		}
		
		@Override
		protected void onPostExecute(List<User> result) {
			dismissProgressDialog();
			refreshResult(result);
		}
	}
	
	private void refreshResult(List<User> users) {
		if(users == null) {
			return;
		}
		
		UserListAdapter adapter = new UserListAdapter(this,users);
		setListAdapter(adapter);
	}
...

 

 

替换后代码如下:

...	
        @Override
	public void onStart() {
		super.onStart();
	
		showLoadingProgressDialog();
		downloadUsersTask();
		
		
	}
	
	@Background
	void downloadUsersTask() {
		ResponseEntity<User[]> responseEntity = restApiService.getUsersByStatus();
		List<User> users = Arrays.asList(responseEntity.getBody());
		testTismissProgressDialog(users);
	}
	
	@UiThread
	void testTismissProgressDialog(List<User> users) {
		dismissProgressDialog();
		refreshResult(users);
	}
	
	private void refreshResult(List<User> users) {
		if(users == null) {
			return;
		}
		
		UserListAdapter adapter = new UserListAdapter(this,users);
		setListAdapter(adapter);
	}
...

 

是不是清晰、简洁了很多~

 

相关参考:

https://github.com/excilys/androidannotations/wiki/WorkingWithThreads

0
0
分享到:
评论

相关推荐

    android backgroud大全.

    android backgroud大全.

    SAP BACKGROUD JOB 新增SCHEDULE

    SAP BACKGROUD JOB 新增SCHEDULE

    经典运动物体背景消除算法,BackGroud Subtract

    包含:ZivkovicAGMM,WrenGA,PratiMediodBGS,AdaptiveMedianBGS等不同算法

    随机抽奖软件-源码

    替换背景图片:将目录中名为backgroud.jpg的图片文件替换为想要的背景图片即可 人员名单:存放于list.txt文本文件中,一行一人名 运行环境:电脑要装Framework4.5及以上版本 软件可配置:可通过修改config.ini文件中...

    LTE backgroud introduction

    介绍了LTE的业界现状,对LTE的系统架构做了一定介绍,同时站在移动接入网对LTE对了初步介绍

    随机抽奖软件源码

    替换背景图片:将目录中名为backgroud.jpg的图片文件替换为想要的背景图片即可 人员名单:存放于list.txt文本文件中,一行一人名 运行环境:电脑要装Framework4.0及以上版本 软件可配置:可通过修改config.ini文件中...

    John's background switcher

    英文版,定时更换桌面,可设置使用网络图片或本地图片

    DemoList-can-change-backgroud-color.rar_DemoList

    能够实现改变背景颜色的CListCtrl控件,适合初学者

    swift-自定义背景色渐变的Button

    自定义背景色渐变的 Button

    arsenic:React的Backgroud组件

    砷 React.js的后台组件 演示与范例 现场演示: 要在本地构建示例,请运行: npm install gulp dev 然后在浏览器中打开 。 安装 使用arsenic的最简单方法是从NPM安装它,并将其包含在您自己的React构建过程中...

    通过js获取div的background-image属性

    之前没有注意过div的background-image这个属性,只是设置它的url,今天遇到一个问题特此做一下记录。 代码如下: ”img_2″ xss=removed xss=removed&gt;&lt;/div&gt; 在js中想获取image属性 代码如下: document....

    Win7LogonBackgroundChanger

    可以转换Windows7的登陆界面背景图片,十分好用的Window个性化小工具

    微信小程序开发手记《三》:backgroud和border属性

    作者:王梵,来自原文地址 先来看一段样式,在wxss中 page{ background-color: cadetblue; background-image: url(../../../image/weixin_logo.png); background-repeat:repeat-x; background-position-y: top;...

    微软cn.bing背景下载,同步壁纸

    download backgroud image of cn.bing.com website and set it as your current desktop backgroud usage: if you want run it just once,just excute run.bat if you want make it as a task of windows os,...

    chrome插件开发-页面对象注入及本地通信

    chrome插件开发-页面对象注入及本地通信 代码包含了应用页面内的js对象注入,js对象与backgroud.js的通信以及backgroud.js与本地程序的通信

    EventBus五种ThreadMode

    提供了5种mode, 我觉得在只用其中的MAIN和BACKGROUD就可以了 1. ThreadMode: POSTING 事件处理和post在同一个线程中,如果是UI线程注意耗时操作。 2. ThreadMode: MAIN 事件处理将在Android的主线程(UI线程)中被调用...

    Flutter 启动页白屏设置/启动画面设置

    launch_backgroud.xml里修改成自己的图片名称,src表示图片的名称不带扩展名,mipmap表示对应各种分辨率下的图片 launch_background.xml文件 &lt;!-- --&gt; 设置全屏图片 styles.xml 文件 false true ...

    ChromeExtention.zip

    chrome插件开发-页面对象注入及本地通信 代码包含了应用页面内的js对象注入,js对象与backgroud.js的通信以及backgroud.js与本地程序的通信

    base_postCSS:前端开发的基础

    循环和竞争+ @for和@each mixins和扩展+ @ define-mixin和@ define-extend 类+ body { backgroud-color: red; .container { color: blue; } }嵌套body { backgroud-color: red; .container { color: blue;

    IT服务能力成熟度模型

    IT SERVICE CMM:backgroud,concept,structure,application

Global site tag (gtag.js) - Google Analytics