什么是Android注释以及我们使用Android注释的原因?

And*_*ial 31 android annotations

我想了解Android Annotations,它是否更适合在所有Android项目中使用?

如果正确,如何实现它.它有什么好的教程吗?

如果是错误的方式.Android Annotations的吸引力是什么?

在此先感谢您的帮助.

ras*_*ian 36

Android Annotations是一个注释驱动的框架,允许您简化应用程序中的代码并减少常见模式的样板,例如设置单击侦听器,强制执行ui /后台线程执行等.

你可以从这样的东西:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final TextView descriptionTextView = (TextView) findViewById(R.id.tv_description);
        final Button hideButton = (Button) findViewById(R.id.btn_hide);
        hideButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                descriptionTextView.setVisibility(View.INVISIBLE);
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

对于这样的事情:

@EActivity(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {

    @ViewById(R.id.tv_description)
    TextView mDescriptionTextView;

    @Click(R.id.btn_hide)
    protected void onHideButtonClick() {
        mDescriptionTextView.setVisibility(View.INVISIBLE);
    }
}
Run Code Online (Sandbox Code Playgroud)

这个怎么运作

你注释你的活动和组件,注释处理器然后生成与默认下划线后缀扩展您的活动和组件(即你的活动不能是最终的),所以如果你有类(在编译时)MainActivity,现在你也将有一个MainActivity_类.

这个新类包含一个编写良好的样板代码,可以执行注释指定的任何内容.

如何实施

我写了这个教程,关于如何集成Android注释,甚至包括一个关于如何更新集成测试的示例,请点击此处.

该教程在今天有效,使用Android Studio~1.5.1,它试图解释一下内部是如何工作的.

你应该用吗?

我会说,如果你有一个中小型项目的罚款.它将使您的代码更容易阅读.但是,如果您的应用程序更大并且包含大量具有复杂活动/组件生命周期的导航流,则如果没有适当地注释某些内容,则可能会难以实现或难以调试并理解错误.

因为如何Android的批注操作,它们嵌入自己的生命周期和这样做,你现在依赖其生命周期中,如果你注释你的看法与(例如@ViewById,那么你就不能引用他们onCreate(),你需要做的方法,并对其进行批注使用@AfterViews和执行此方法时,您的视图就可以使用了).这不一定是个问题,你只需要很好地理解Android的行为以及Android Annotations行为.

总而言之,就像在任何库中一样,如果你依赖它,那么你依赖它,所以你也可以非常彻底地理解它是如何工作的.您的项目现在取决于其他人的.


DDs*_*six 7

我不再使用Android Annotations了.当我使用这个库时,它是错误的,并使调试成为一场噩梦.另一个缺点是它降低了代码的可移植性.如果你在这个项目上独自工作,那么没关系,你没有这个问题,但是当你在团队中工作时,你必须再考虑一下.

如果你想使用它,他们的网站上有很多教程.

另一种方法:如果你想减少代码量,同时使它易于使用和理解,我建议你使用Butter Knife库.我用了很多,到目前为止没有遇到任何错误.非常容易使用和阅读.


Jua*_*uan 5

Android Annotations是一个库,它通过使用一些属性或注释(如@EActivity、@ViewById、@OnClick)为我们“自动生成”代码。它旨在促进和减少编码时间。

“AndroidAnnotations 是一个开源框架,可以加速 Android 开发。它负责处理管道,让您专注于真正重要的事情。通过简化代码,它有助于维护。”

(此处的文档:https : //github.com/excilys/androidannotations/wiki

但是......我们不使用它,我完全同意DDsix的回答。使用 SOLID 原则并编码应该在何时何地编码的内容......