当Fragment.instantiate优于MyFragment.newInstance或new MyFragment()时

use*_*925 9 java android android-fragments

我是代码审查其他人的ViewPager实现.他有一个属于每个视图的片段类数组.在getItem(int i)中,他会编写MyFragment.newInstance(),我认为没有问题.但是,查看ViewPager的google doc,他们在他们的示例中使用Fragment.instantiate.除了设置类信息的方式之外,使用实例化而不是调用newInstance(arg)或空构造函数有什么设计优势吗?

链接: Fragment.instantiate

laa*_*lto 8

instantiate() 允许您按名称指定片段,而无需编译时静态解析该类.

当片段名称来自某些运行时源(例如二进制XML)时,它很有用:

<fragment class="com.example.FragmentClass" ...
Run Code Online (Sandbox Code Playgroud)

这是框架实例化布局XML中指定的片段的方式.

在代码中,最好使用newInstance()或者使用空构造函数来获得编译时静态类型检查.

instantiate()引导下的代码与使用newInstance()/ empty构造函数实例化时发生的代码没有太大的不同,因此不太可能在性能上有显着差异.