Android Annotation框架初步实践
来源:互联网 发布:1×1矩阵的值怎么求 编辑:程序博客网 时间:2024/05/18 02:07
Android Annotation框架初步实践
实现模拟访问服务器数据和获取验证码倒计时的功能
关于集成别的文章里都有很多,这里就不说了
集成Android Annotation可以参考链接:
http://blog.csdn.net/caiwenfeng_for_23/article/details/45801151
,记录下集成失败的解决方案,在module的build gradle中加入
apt { arguments { androidManifestFile variant.outputs[0]?.processResources?.manifestFile }}
集成好以后,新建一个Activity,注意在Manifest中默认注册的Activity名称上加上”_”,因为Android Annotation会默认生成一个你新建的Activity的子类.如果提示找不到没有关系,编译以后就不会报错了
在Activity上加上
@EActivity(R.layout.activity_main)
可以为Activity注册布局文件.自动生成的onCreate方法可以删掉.
@ViewById(R.id.annotation_test) TextView getData; @ViewById Button getvalid;
如果View的id与变量名一直,可以省略@ViewById后面的参数,如果名称不一致,则需要传入id,如@ViewById(R.id.getvalid)
接下来我们实现一个模拟获取服务器数据的功能:
@Click public void getuser() { searchAsync("fancy", "xty"); } @Background(id="main") void searchAsync(String searchString, String userId) { User user = model.getUser(searchString, userId); upadateUser(user); } @UiThread void upadateUser(User user) { if(user != null) getData.setText(user.getUsername() + "," + user.getPassword()); }
在@Background中可以执行被添加@UiThread注解的方法.
被添加了@UiThread注解的方法和未被添加@UiThread注解的方法会在不同的线程执行.
上述代码中model.getUser方法实现的是一个耗时操作,并且在结束后返回一个新的User对象.
在实际项目中,可以把model.getUser替换成访问服务器数据的代码.如果使用http访问服务器,Annotation提供了@Rest来方便开发者实现.
如果使用webService访问服务器,可以自己封装好访问服务器的方法,在model层或者service层调用.
Android Annotation中的 @UiThread 和 @Background 结合使用可以替代异步任务或者部分Handler实现的逻辑.接下来我们用这个框架来实现一个获取验证码倒计时的功能:
int time = 10; /**按钮的点击事件*/ @Click public void getvalid() { getvalidAsync(); getvalid.setEnabled(false); } /**倒计时操作*/ @Background(id="getvalid") void getvalidAsync() { if (time >= 0) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } time--; updatebtntext(); } } /**实时更新ui*/ @UiThread void updatebtntext() { if (time >= 0) { getvalid.setText(time + "s"); getvalidAsync(); } else { getvalid.setText("重新获取"); getvalid.setEnabled(true); time = 10; } }
测试,反复重新获取验证码不会出现倒计时越来越快的情况.AndroidAnnotation内部通过BackgroundExecutor 来对线程进行管理,这些我们都不必操心,只需要使用即可.
更多详细的功能使用,请参考博客:http://www.csdn123.com/html/topnews201408/29/729.htm
需要源码的,在评论回复邮箱即可.
- Android Annotation框架初步实践
- Android懒人框架Android annotation
- Android多媒体框架初步分析
- Android多媒体框架初步分析
- Android多媒体框架初步分析
- Android多媒体框架初步分析
- Android多媒体框架初步分析
- Android多媒体框架初步分析
- Android多媒体框架初步分析
- Android多媒体框架初步分析
- Android多媒体框架初步分析
- android多媒体框架初步分析
- Android多媒体框架初步分析
- Android多媒体框架初步分析
- Android多媒体框架初步分析
- Android ORMLite 框架初步学习
- Android开发 打造自己的Annotation框架
- 利用Annotation实现Android sqlite框架
- Boost 库 enable_shared_from_this 实现原理分析
- sqoop把mysql导入hive时报错:Could not load org.apache.hadoop.hive.conf.HiveConf.
- java对接mysql数据库
- nohup 和 &
- makefile 编译可执行文件
- Android Annotation框架初步实践
- ubuntu下的android studio jni生成c++动态库的调用方法及排错(ndk生成的动态库调用)
- 嵌入式系统中的目标识别技术
- QT4.84The GDB process crashed
- centos系统下mysql安装部署及用户管理
- Asp中Linq怎么取得表中某列的最大值
- 【CG物理模拟系列】弹性体模拟--Mass Spring及绳子模拟
- 自己绘制的可点击,可滑动,可动态添加的柱状图
- java 防止同一IP多次请求攻击