2016-12-15 46 views
0

我试图在我的应用程序视图上实现OnClick行为。由于我是Android新手,并且想知道如果将此传递给View.OnClickListener接口将会是更好的选择,或者使用setOnclickListener匿名类来控件。至于我,我觉得通过这可能会导致整个活动和它的子元素到特定的小部件,因此有更多的内存消耗,以避免内存泄漏,这是最好的方法。setOnclickListener vs Activity implements View.OnClickListener

+0

最好的选择是实现View.OnClickListener。它会减少一些代码行,并容易在一个块中保留所有的点击事件。 – Nas

+0

@Nas yup我知道这一点,但我对内存消耗很好奇。 –

+0

也许它会减少你的文件大小的一些内存(空间),但是两者都会引用相同的类,并且工作原理相同,因此它会分配相同数量的内存(RAM)。 – Nas

回答

1

实际上,当我们实现OnClickListener是因为我们有多个或两个单击项目。就像如果我有一个布局10个按钮和我写的每一个点击监听器:

button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     } 
    }); 
    button2setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     } 
    }); 
    button3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

     } 
    }); 

它不是一个良好的编程习惯这就是为什么我们实现OnClickListener谱写的onClick的所有点击监听器()。 因此,您在将来进行任何更改时都很容易。

否则,如果你有单个按钮,那么你可以使用setOnClickListener()。

这两者之间没有太大的区别。它的所有关于Android的良好编码习惯。 :)

+0

它的一切都好,但我认为实现一个接口,然后传递使用这意味着我们正在创建一个活动的完整引用到特定的小部件,所以可能复制与活动相关的所有内存开销。而在传递接口作为匿名类时,我们只是传递特定的接口而不是活动。 –

0

您还可以使用XML格式file.its容易

android:onClick = "ButtonOne" 

属性!

+0

我不是在问什么是简单的,我只是从另一个角度思考它是内存管理。 –

+0

AFAIK所有三种方法都使用几乎相同的内存。要考虑的问题是,哪一个是良好的编码实践。这取决于情况。实现View.OnClickListener和使用android:onClick =“ButtonOne”是优选的,然后使用setOnClickListner为每个按钮,在我看来。 –

相关问题