我们知道,例如,android 的一个 Button 时间,
其 onclick 方法有几种实现方法:
匿名内部类
Activity实现接口
XML中设置 android:onclick 属性
外部类实现接口
我想知道,现实的 android 开发是会选择哪一种方式?
当一个 页面上需要很多点击事件的时候,哪一种方式会比较高效呢?
小白飘过~~~
我们知道,例如,android 的一个 Button 时间,
其 onclick 方法有几种实现方法:
匿名内部类
Activity实现接口
XML中设置 android:onclick 属性
外部类实现接口
我想知道,现实的 android 开发是会选择哪一种方式?
当一个 页面上需要很多点击事件的时候,哪一种方式会比较高效呢?
小白飘过~~~
使用第三方的库
Android依赖注入:Dagger、RoboGuice和ButterKnife
XML的 onclick ,增加耦合,不可取。
匿名内部类: Activity 代码少可以用
当onclick很多时,建议转移到外部类去实现。
本类中实现 onclick 接口,代码少时可以用,减少麻烦。
能不显式实现接口就不要显式实现接口,而是写成匿名内部类的形式。
推荐在外部类中添加个回调函数实现逻辑,然后匿名内部类中调用(就是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));
2 回答1.3k 阅读✓ 已解决
2 回答2.6k 阅读
1 回答2.1k 阅读
1 回答1.1k 阅读
2 回答1.7k 阅读
1 回答1.3k 阅读
1.3k 阅读
比较常用的是内部匿名实现,如果
Activity
趋向复杂,代码较多,可以方便的迁移到外部类实现。如果是多个按钮,推荐采用一个OnClick
对象通过switch(View.getId())
的方法统一写在一起,这样减少实例化对象的数量,优化内存占用。另外,不推荐在XML
中绑定OnClick
,这样是增加耦合的行为,并且对代码混淆也有影响。