SweetDev Asked:2020-05-03 02:00:41 +0000 UTC2020-05-03 02:00:41 +0000 UTC 2020-05-03 02:00:41 +0000 UTC LayoutInflater.from 和 getLayoutInflater 之间的区别 772 我们有一个活动我可以做到 LayoutInflater.from(activity) 或者 activity.layoutInflater 有什么区别? java 2 个回答 Voted Best Answer Shwarz Andrei 2020-05-03T02:29:43Z2020-05-03T02:29:43Z 这两种选择通常都没有太大区别,但有细微的差别。 LayoutInflater.from (activity) 等待 Context 并发生: LayoutInflater LayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); activity.layoutInflater使用 getWindow().getLayoutInflater(); 这就是区别,事实是 getWindow 访问已经缓存的 LayoutInflater 并通过 Provider 工作。此外,您已经获得了带参数的 Inflater,还有 attr,它可以是不同的,例如,具有不同的样式、应用程序主题(如果它们已更改)。故意这样做是可以的,但我认为在正常情况下很难满足。事实证明,如果可能的话,最好使用 getLayoutInflater() 这个调用会更快(Ooooo 非常轻微)并且会得到实际的 Inflater,否则你会从当前的 Context 中得到 LayoutInalfater。 Eugene Krivenja 2020-05-03T19:22:24Z2020-05-03T19:22:24Z 我将添加到已接受的答案中。 本质上没有区别,唯一的实现Window是PhoneWindow,它只将充气器缓存到变量中以便更快地返回。 mLayoutInflater = LayoutInflater.from(context); 因此,使用相同的上下文(活动),结果将完全相同。
这两种选择通常都没有太大区别,但有细微的差别。
LayoutInflater.from (activity) 等待 Context 并发生:
activity.layoutInflater使用
getWindow().getLayoutInflater();这就是区别,事实是 getWindow 访问已经缓存的 LayoutInflater 并通过 Provider 工作。此外,您已经获得了带参数的 Inflater,还有 attr,它可以是不同的,例如,具有不同的样式、应用程序主题(如果它们已更改)。故意这样做是可以的,但我认为在正常情况下很难满足。事实证明,如果可能的话,最好使用 getLayoutInflater() 这个调用会更快(Ooooo 非常轻微)并且会得到实际的 Inflater,否则你会从当前的 Context 中得到 LayoutInalfater。
我将添加到已接受的答案中。
本质上没有区别,唯一的实现
Window是PhoneWindow,它只将充气器缓存到变量中以便更快地返回。因此,使用相同的上下文(活动),结果将完全相同。