当编写具有许多视图的大型应用程序时(因此,许多ID),
这是一种更好的做法,或者表现更好;
拥有多个ID并使用findViewById(X)
找到它们,或者使用多个标记并使用findViewWithTag(Y)
查找视图?
答案 0 :(得分:1)
就更好的做法而言,根据应用的要求使用一个或两个(通常是两者)。如果我是你,我会更关心可用性和分组而不是性能(因为应用程序很大并且可能变得不可维护)。
度Acc。到Android Docs的这一部分:
Android中Tag的主要目的是使代码分组更清晰。可以把它想象成超市中的标记项目:食品,电子产品等......我认为使用标签对性能的影响最小。
但是,下面描述的做法对性能的影响要大于避免使用标签/视图或两者兼而有之。
如果您想提高效果,
答案 1 :(得分:1)
findViewWithTag()
仅为视图定义。但是,findViewById()
可用于查看和活动。
我认为findViewById()
访问视图的最佳做法。即使您应该使用Butterknife 来访问视图。
效果:findViewById()
比findViewWithTag()
快,因为比 String.equals()更快地比较 int 。
View.java
protected View findViewTraversal(@IdRes int id) {
if (id == mID) {
return this;
}
return null;
}
protected View findViewWithTagTraversal(Object tag) {
if (tag != null && tag.equals(mTag)) {
return this;
}
return null;
}