KG6*_*ZVP 78 xml performance android android-fragments
我意识到之前已经提出了类似措辞的问题,但这是不同的.我是开发Android应用程序的新手,我有三个关于android:onclick=""XML属性和setOnClickListener方法之间差异的问题.
两者有什么不同?在编译时或运行时或两者都找到两个实现之间的区别?
哪些用例有利于哪些实现?
Android中片段的使用与实现选择有何不同?
Jeb*_*han 117
OnClickListener与OnClick之间的区别:
两者的功能相同,只需通过java代码设置,另一个通过xml代码设置.
setOnClickListener代码实现:
Button btn = (Button) findViewById(R.id.mybutton);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myFancyMethod(v);
}
});
// some more code
public void myFancyMethod(View v) {
// does something very interesting
}
Run Code Online (Sandbox Code Playgroud)
XML实现:
<?xml version="1.0" encoding="utf-8"?>
<!-- layout elements -->
<Button android:id="@+id/mybutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click me!"
android:onClick="myFancyMethod" />
<!-- even more layout elements -->
Run Code Online (Sandbox Code Playgroud)
性能:
两者的表现都相同.在编译时,Xml被预解析为二进制代码.所以在Xml中没有头脑.
局限性:
android:onClick适用于API级别4以上,所以如果您的目标是<1.6,那么您就无法使用它.
Liv*_*vio 14
我很震惊没有人谈到这个,但要小心,虽然android:onClickXML似乎是处理点击的一种方便的方法,setOnClickListener实现除了添加之外还做了一些额外的事情onClickListener.实际上,它将view属性设置clickable为true.
虽然在大多数Android实现中它可能不是问题,但根据电话构造函数,按钮总是默认为clickable = true但某些手机型号上的其他构造函数可能在非Button视图上具有默认的clickable = false.
因此设置XML是不够的,你必须一直认为添加android:clickable="true"非按钮,如果你有一个设备,其默认值是clickable = true,你甚至忘记了一次放置这个XML属性,你将不会注意到这个问题在运行时会在客户手中获得市场反馈!
此外,我们永远无法确定proguard将如何对XML属性和类方法进行模糊处理和重命名,因此不能100%安全地确保它们有一天不会出现错误.
因此,如果您从未想过遇到麻烦而从未想过它,那么最好使用setOnClickListener像ButterKnife 这样的库或带有注释的库@OnClick(R.id.button)
mar*_*son 11
只是:
如果你有android:onClick = "someMethod" xml,它会public void someMethod在你的Activity类中查找.从您的ActivityOnClickListener调用,它与某些特定的链接.例如,在下面的代码中说明按下时必须执行的操作.ViewsomeButton.setOnClickListenersomeButton
希望能帮助到你 :)
| 归档时间: |
|
| 查看次数: |
64081 次 |
| 最近记录: |