我们应该为OnClickListeners或内部命名类使用匿名类吗?

时间:2012-03-13 06:34:29

标签: java android

我的活动中有很多按钮,我有以下问题:

  1. 我应该为每个按钮为OnClickListeners创建多个内部匿名类,如下所示:

    private View.OnClickListener mShuffleListener = new View.OnClickListener() {
        public void onClick(View v) {
            /// task to do
        }
    };
    
  2. 或者我应该去指定一个内部类并添加一个if条件来检查调用哪个点击监听器。

  3. 哪一个更好地节省内存资源?

3 个答案:

答案 0 :(得分:7)

  

保存内存资源哪一个很酷?

几乎没有任何区别。最多1个字......这就是将静态内部类与(非静态)匿名类进行比较。如果您有数百个这些按钮,那么保存尽可能小的代码就不值得代码可读性/可维护性损失,甚至(IMO)。

答案 1 :(得分:2)

处理事件有三种方法。请查看以下链接

http://tseng-blog.nge-web.net/blog/2009/02/14/implementing-listeners-in-your-android-java-application/

请参阅以下内容以了解匿名类和内部类的使用

匿名课程

  

如果您不想使用代码,请使用匿名内部类   在其他任何地方(这个类正在这里使用,而不是其他地方。)

内部课程

  

可以使用内部类代码(如果仅使用创建它的类)   私有)。如果你看到一个命名的内部类,有人可能会想   它会在课堂上的多个地方使用。

答案 2 :(得分:1)

我通常更喜欢更精细的方法,这使得在使用onClick侦听器时代码更容易阅读

对于属性菜单中的几乎所有小部件都有一个名为onClick的属性(也可以在布局xml中找到),在那里你可以编写方法名称Ex xyz

现在转到你的java源文件,你只需编写一个方法 前

public void xyz(View v)
{
//your code goes here
}

并且你已经完成。如果你真的想要使用内部类,那么如果你担心内存,则使用匿名的内存(如果存储的每个引用是一个引用类型,在这种情况下,它将占用8个字节的内存)。

希望这有帮助..请问您是否需要更多说明