AndroidAnnotations文档翻译:介绍 ,Introduction
我们想要让安卓程序的 编写 和 维护 过程更加容易。
我们相信,带有 清晰意图 的简单代码,是达成那些目标的最佳途径。
Robert C. Martin 曾写道:
花在阅读[代码]上的时间,跟花在编写上的时间之比,超过了10 比1,[因此]代码越容易读,就越容易写。
虽然 我们都狠喜欢开发安卓程序,但是,我们经常会困惑: 为什么我们总是要 一遍又一遍地 编写相同的代码? 为什么我们的程序维护起来越来越难? 上下文( Context )和活动( Activity )这种 上帝对象 、 与复杂的 线程 打交道 、 难以发现的应用编程接口 、 匿名监听 器类 的负荷 、 成千上万的不必要的 类型转换 …… 我们就不能做点改变吗?
开发 者可以通过 Java注解 来表达自己的 意图 ,然后让AndroidAnnotations 来在 编译期间 生成那些 繁琐 的 代码。
•. 依赖注入 : 注入视图 、额外参数()、系统服务 、资源……
•. 简化 的线程模型: 对妳的方法进入注解, 以控制,它们是在用户界面线程上运行还是在后台线程中运行。
•. 事件绑定 : 对方法进行注解,以对视图上的事件做出响应, 不需要再写丑陋的匿名监听器类了!
•. REST客户端 : 创建 一个客户端接口,由 AndroidAnnotations 来生成实现代码。
•. 不玩魔法: AndroidAnnotations 在编译期间生成子类,所以 ,妳可以查看它生成的代码,以观摩一下它是如何运行的。
•. AndroidAnnotations提供 了如此多的特性, 尺寸 却不足 150kb ,而且 还不会 降低运行 时性能 !
妳的安卓代码是不是狠容易 编写 、阅读和 维护 ?
看看这个:
@EActivity(R.layout.translate) // 将内容视图设置为 R.layout.translate
public class TranslateActivity extends Activity {
@ViewById // 注入R.id.textInput
EditText textInput;
@ViewById (R . id . myTextView) // 注入R.id.myTextView
TextView result;
@AnimationRes // 注入android.R.anim.fade_in
Animation fadeIn;
@Click // 当R.id.doTranslate 按钮被按时,执行此方法
void doTranslate () {
translateInBackground(textInput . getText() . toString());
}
@Background // 在后台线程中执行
void translateInBackground (String textToTranslate ) {
String translatedText = callGoogleTranslate(textToTranslate);
showResult(translatedText);
}
@UiThread // 在ui 线程中执行
void showResult (String translatedText ) {
result . setText(translatedText);
result . startAnimation(fadeIn);
}
// [...]
}
和女神在一起的日子
好友遇难,小职员唐宾挑起照顾其妻女的重担,同处屋檐,情愫暗生,却跨不过内心的道德门槛……
HxLauncher: Launch Android applications by voice commands