androidannotations的background和UiThread配合使用参考

简介

androidannotations在开发中的代码规范思考:(MVC思考)时间太紧,先贴代码:

Activity的代码:

package edu.njupt.zhb.main;

import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Bean;
import org.androidannotations.annotations.EActivity;

import android.app.Activity;

/**
 * @author Zheng Haibo
 * @web  http://www.mobctrl.net
 */
@EActivity(R.layout.main)
public class MainActivity extends Activity {

	@Bean
	MainActions mainActions;

	@AfterViews
	void afterViews() {
		doSomething();
	}

	private void doSomething() {
		mainActions.doActionsInThread(20, new UiCallback() {

			@Override
			public void onBackgroundEnd() {
				// TODO Auto-generated method stub
				// write the code
				System.out.println("the background thread end...");
			}
		});
	}
}

业务逻辑

MainActions

package edu.njupt.zhb.main;

import org.androidannotations.annotations.Background;
import org.androidannotations.annotations.EBean;
import org.androidannotations.annotations.RootContext;
import org.androidannotations.annotations.UiThread;

import android.content.Context;
import android.widget.Toast;
/**
 * @author Zheng Haibo
 * @web  http://www.mobctrl.net
 */
@EBean
public class MainActions {

	@RootContext
	Context context;

	@Background
	void doActionsInThread(int params, UiCallback uiCallback) {
		// database,net,file,sp ...
		int result = 0;
		for (int i = 0; i < params; i++) {
			result = result + i;
			try {
				Thread.sleep(200);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println("test the thread is run in the background...");
		}
		runInUiThread(result, uiCallback);
	}

	@UiThread
	void runInUiThread(int result, UiCallback uiCallback) {
		Toast.makeText(context, result + ", just a test", Toast.LENGTH_SHORT)
				.show();
		System.out.println("you can write the ui code ...");
		uiCallback.onBackgroundEnd();
	}
}

回调接口

package edu.njupt.zhb.main;

/**
 * @author Zheng Haibo
 * @web http://www.mobctrl.net
 */
public interface UiCallback {
	public void onBackgroundEnd();
	// ...
}

我觉得按照这个思路写,代码会比较清爽。后续说原因,先回宿舍了。。。。

时间: 2024-10-07 05:30:13

androidannotations的background和UiThread配合使用参考的相关文章

androidannotations的background和UiThread配合使用參考

简单介绍 androidannotations在开发中的代码规范思考:(MVC思考)时间太紧,先贴代码: Activity的代码: package edu.njupt.zhb.main; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.Bean; import org.androidannotations.annotations.EActivity; i

android注解使用详解(图文)

在使用Java的SSH框架的时候,一直在感叹注解真是方便啊,关于注解的原理,大家可以参考我的另一片文章Java注解详解.最近有时间研究了android注解的使用,今天与大家分享一下. android中注解的使用用到了GitHub上的开源框架androidannotations,下载地址.这个开源框架应该是目前使用人数最多的android注解框架了,主要是由于它设计的注解标签非常多,能够满足我们日常开发中的大部分需求.androidannotations将许多可以抽取出来的方法都包装成了注解标签供

鲁棒性、可读的android架构(I)

Since the early days of Android, I've been looking for a robust way to build Android apps, keep the IO operations out of the UI Thread, avoid duplicated network calls, cache relevant things, update the cIache at the right time, etc... with the cleane

Androidannotation使用之@Rest与服务器交互的JSON数据转换(二)

开篇 之前的一篇博客:Androidannotation使用之@Rest获取资源及用户登录验证(一):http://blog.csdn.net/nupt123456789/article/details/24384713 主要写了Rest在用户登录的时候,需要JSESSION字段的问题.本博客主要写JSON格式的转换. @Rest的参考文档: https://github.com/excilys/androidannotations/wiki/Rest-API#rest 简介: 从上一篇博客中,

Androidannotation使用之@Rest与server交互的JSON数据转换(二)

开篇 之前的一篇博客:Androidannotation使用之@Rest获取资源及用户登录验证(一):http://blog.csdn.net/nupt123456789/article/details/24384713 主要写了Rest在用户登录的时候,须要JSESSION字段的问题.本博客主要写JSON格式的转换. @Rest的參考文档: https://github.com/excilys/androidannotations/wiki/Rest-API#rest 简单介绍: 从上一篇博客

手机卫士07_自定义吐司_桌面小火箭_短信备份_接口和回调_应用程序信息,

1,自定义吐司显示风格 ①创建一个布局文件(代码注册的View看不出效果,所以还是定义布局文件比较好) 这里的背景是.9图片会根据包裹内容来拉伸 ②在显示自定义吐司的界面,显示的吐司通过View.inflate()创建 ③在设置中心增加一条修改归属地显示风格. {"半透明","活力橙","卫士蓝","金属灰","苹果绿"}; 点击之后弹出一个单选对话框. builder.setSingleChoiceIte

JS结合DOM事件的使用

这是初始文字 右边是一个测试文本框: 鼠标划过.点击.松开上面的文字都会有不同的效果,鼠标光标移到.离开文本框也会有不同的效果. 首先新建一个html文件 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-

jQuery第一篇 (帅哥)

  同学心目中的jQuery: 简单易用,功能强大,对移动端来说,体积稍大. 1.1 回顾前面学到的js我们遇到的一些痛点 window.onload 事件有个事件覆盖的问题,我们只能写一个 代码容错性差 浏览器兼容性问题 书写很繁琐,代码量多 代码很乱,各个页面到处都是 动画效果,我们很难实现 1.2 jQuery解决问题 解决了我们上面遇到所有问题 1.3 jQuery的基本使用 min:它是压缩过的版本 区别:我们开发过程中,会用未压缩的版本,或者压缩的. 项目上线的时候,我们要用压缩过的

Android Studio配置Android annotation

Android annotation官网:https://github.com/excilys/androidannotations Android annotation官网中有提到在Gradle中要怎么配置: https://github.com/excilys/androidannotations/wiki/Building-Project-Gradle 我也是参考上面的配置的.我的配置如下,要配置的地方有两处: 1> Project 的 build.gradle : // Top-leve