Fra*_*ois 6 performance android android-databinding
我想知道以下有什么区别:
binding = DataBindingUtil.inflate(inflater, R.layout.drawer_item_primary, parent, false);
Run Code Online (Sandbox Code Playgroud)
VS
binding = DrawerItemPrimaryBinding.inflate(inflater, parent, false);
Run Code Online (Sandbox Code Playgroud)
有任何性能差异吗?
每个的首选用例是什么?
任何其他信息将不胜感激!
谢谢!
Binding class's inflate
按照Android文档中的建议使用.
在DataBindingUtil类文档中,您可以看到.
膨胀
Run Code Online (Sandbox Code Playgroud)T inflate (LayoutInflater inflater, int layoutId, ViewGroup parent, boolean attachToParent)
仅当layoutId事先未知时才使用此版本.否则,使用生成的Binding的膨胀方法来确保类型安全的膨胀.
一种选择是通过膨胀,DataBindingUtil
但只有你没有生成绑定类.
您已生成binding class
,使用该类而不是使用DataBindingUtil
.
在Java中
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
HomeFragmentBinding binding = HomeFragmentBinding.inflate(inflater, container, false);
//set binding variables here
return binding.getRoot();
}
Run Code Online (Sandbox Code Playgroud)
在科特林
lateinit var binding: HomeFragmentBinding
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
binding = HomeFragmentBinding.inflate(inflater, container, false)
return binding.root
}
Run Code Online (Sandbox Code Playgroud)
如果未生成布局biniding类,请参阅此答案.
实际上,两者都在工作,不会影响性能。我注意到的只有一个微小的区别是,如果您确定要膨胀的布局,那么您可以使用
binding = DrawerItemPrimaryBinding.inflate(inflater, parent, false);
但是如果你想要动态绑定类,那么你可以使用
int layoutId = R.layout.drawer_item_primary;
DataBindingUtil.inflate(inflater, layoutId, parent, false);
Run Code Online (Sandbox Code Playgroud)
所以DrawerItemPrimaryBinding.inflate(inflater, parent, false);
总是会回到我们的DrawerItemPrimaryBinding
班级。如果我们必须使用, DataBindingUtil.inflate(inflater, layoutId, parent, false);
那么我们可以根据需要进行转换。
谢谢你。
归档时间: |
|
查看次数: |
1240 次 |
最近记录: |