`
zhangym124
  • 浏览: 345189 次
  • 性别: 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)通常指的是UI元素的背景颜色或图像。这篇内容主要涉及的是Android系统内置的颜色资源,这对于UI设计者和开发者来说是非常有用的参考。以下是一些关键知识点: 1. **颜色资源**:...

    SAP BACKGROUD JOB 新增SCHEDULE

    ### SAP Background Job 新增 Schedule 定时任务 #### 背景与意义 在企业级应用环境中,SAP系统作为核心业务平台承担着极其重要的角色。为了确保业务流程的高效运行,很多后台处理任务(Background Jobs)需要按照...

    DemoList-can-change-backgroud-color.rar_DemoList

    本项目“DemoList-can-change-backgroud-color.rar_DemoList”专注于展示如何实现CListCtrl控件的背景颜色动态改变功能,对于初学者来说是一个很好的学习案例。 首先,我们要理解CListCtrl控件的基本用法。它是CWnd...

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

    Wren GA利用种群优化策略来学习和更新背景模型。每个像素被看作是种群中的一个个体,通过模拟自然选择过程,适应度较高的像素(更接近背景)被保留下来,形成新的背景模型。这种方法能够较好地适应复杂的背景变化,...

    随机抽奖软件-源码

    替换背景图片:将目录中名为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

    随着数字时代的不断发展,人们对于个性化的需求日益增长,电脑桌面背景作为日常使用中不可忽视的一部分,也越来越受到重视。"John's background switcher"软件应运而生,旨在为用户提供一个自动化、个性化的桌面背景...

    arsenic:React的Backgroud组件

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

    Win7LogonBackgroundChanger

    《Windows7登录背景修改工具——实现个性化电脑桌面》 在数字化时代,个人计算机早已不再仅仅...通过合理利用这款工具,我们可以更好地享受科技带来的便利,同时展现自我风格,让每一次开机都成为一次美好的视觉体验。

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

    我们可以利用这个层来作为按钮的背景,而不是使用默认的纯色填充。 2. **添加子layer**: UIButton是CALayer的子类,因此我们可以向其添加子layer。通过调用`addSublayer`方法,我们可以将CAGradientLayer添加到...

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

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

    C#图片高质量合成

    #### 一、项目背景及目标 本项目主要针对的是C#环境下图片高质量合成的应用需求。通过一系列的操作(包括下载网络图片、按比例缩放图片以及将两幅不同尺寸的图片进行合成),实现高质量图片的合成功能。 #### 二、...

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

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

    Hitech 人机界面动画DEMO祥解.doc

    每个子宏(如图3所示)都有特定的功能,它们被BACKGROUD宏依次执行,形成复杂的动画效果。\n\n子宏1、2、3、4是BACKGROUD宏的组成部分,各自执行特定的逻辑。例如,可能有一个子宏负责红色圆的动画状态切换,另一...

    微软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,...

    自定义SeekBar(图片背景,图片进度)

    通过这种方式,我们可以自由地设计SeekBar的外观,使其更好地融入到应用程序的UI设计中。在这个例子中,我们使用了两张图片作为背景和进度条,使得SeekBar更加个性化和美观。在实际开发中,还可以根据需求进一步定制...

    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 ...

Global site tag (gtag.js) - Google Analytics