`
zhangym124
  • 浏览: 342621 次
  • 性别: 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利用种群优化策略来学习和更新背景模型。每个像素被看作是种群中的一个个体,通过模拟自然选择过程,适应度较高的像素(更接近背景)被保留下来,形成新的背景模型。这种方法能够较好地适应复杂的背景变化,...

    John's background switcher

    "John's background switcher"是一款英文...无论是从网络上获取新图还是利用本地资源,都可以根据个人喜好轻松设置。而"SwitcherSetup36.exe"的提供,则使得用户可以便捷地将这款功能丰富的软件安装到自己的计算机上。

    随机抽奖软件-源码

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

    LTE backgroud introduction

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

    随机抽奖软件源码

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

    arsenic:React的Backgroud组件

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

    Win7LogonBackgroundChanger

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

    通过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宏的组成部分,各自执行特定的逻辑。例如,可能有一个子宏负责红色圆的动画状态切换,另一...

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

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

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

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

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

    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