getLayoutInflater()和.getSystemService(Context.LAYOUT_INFLATER_SERVICE)是否有区别?

简单的“不”答案会让我冷静。 如果有什么区别,那它是什么?

Solutions Collecting From Web of "getLayoutInflater()和.getSystemService(Context.LAYOUT_INFLATER_SERVICE)是否有区别?"

没有

只要调用getLayoutInflater()的Activity或Window具有可调用getSystemService()的相同上下文,就没有区别。


certificate您可以将由getLayoutInflater()返回的LayoutInflater跟踪到LayoutInflater.from() ,您可以看到这仅仅是来自源代码的getSystemService()的快捷方式:

 public static LayoutInflater from(Context context) { LayoutInflater LayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (LayoutInflater == null) { throw new AssertionError("LayoutInflater not found."); } return LayoutInflater; } 

这是你如何定义一个LayoutInflater。

 LayoutInflater inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE); 

getLayoutInflater()只是通过返回LayoutInflater来“快速访问从Context中检索到的窗口的LayoutInflater实例”(来自文档 )。

同样, getSystemService(Context.LAYOUT_INFLATER_SERVICE)用于检索一个LayoutInflater,用于在此上下文中扩展布局资源。

所以实际上两者没有什么区别。

来源: 文档

至less有一种情况是唯一的

getSystemService(Context.LAYOUT_INFLATER_SERVICE);

必须用来代替对方

getLayoutInflater

这种情况是在一个任意的对象类。 例如,我有一个类调用objectA的实例。 在objectA中,我想膨胀到父视图的视图(发生在ArrayAdapter,在其listview上膨胀自定义行)。在这种情况下, context.getLayoutInflater不起作用,因为没有活动或与上下文相关的窗口。 只有getSystemService(Context.LAYOUT_INFLATER_SERVICE)是合适的。

没有。

根本没有区别。