我们知道,例如,android 的一个 Button 时间,
其 onclick 方法有几种实现方法:
匿名内部类
Activity实现接口
XML中设置 android:onclick 属性
外部类实现接口
我想知道,现实的 android 开发是会选择哪一种方式?
当一个 页面上需要很多点击事件的时候,哪一种方式会比较高效呢?
小白飘过~~~
用ButterKnife
来做onclick
事件的飘过...
比较常用的是内部匿名实现,如果Activity
趋向复杂,代码较多,可以方便的迁移到外部类实现。如果是多个按钮,推荐采用一个OnClick
对象通过switch(View.getId())
的方法统一写在一起,这样减少实例化对象的数量,优化内存占用。另外,不推荐在XML
中绑定OnClick
,这样是增加耦合的行为,并且对代码混淆也有影响。
推荐使用:ButterKnife
能不显式实现接口就不要显式实现接口,而是写成匿名内部类的形式。
推荐在外部类中添加个回调函数实现逻辑,然后匿名内部类中调用(就是swing设计器所生成的那种格式)。
public class XXXActivity extends Activity {
Button xxxButton;
// ...
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
xxxButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) { xxxButtonOnClick(view); }
});
}
private void xxxButtonOnClick(View view)
{
// ...
}
}
之所以这样,是因为java8中加入了匿名函数代替匿名内部类用做闭包,这样写的话便于以后的升级。
xxxButton.setOnClickListener(v -> xxxButtonOnClick(v));
现在各种工具库也越来越多
等你慢慢往后学,你就知道你想用什么
我一般就实现了listener在activity 中重写点击事件...强答一波只为看看大家的看法
-
使用第三方的库
Android依赖注入:Dagger、RoboGuice和ButterKnife
XML的 onclick ,增加耦合,不可取。
匿名内部类: Activity 代码少可以用
当onclick很多时,建议转移到外部类去实现。
本类中实现 onclick 接口,代码少时可以用,减少麻烦。