Android:如何(重新)使用LayoutInflater

时间:2012-12-21 14:59:06

标签: android performance

我想知道如何正确获取LayoutInflater实例以及保留它的时间。

android doc声明:

  

永远不会直接使用。相反,使用getLayoutInflater()或   getSystemService(String)检索标准的LayoutInflater   已经连接到当前上下文的实例   正确配置了您正在运行的设备。

我的问题:

  • getSystemService(String)是否快速,所以我可以在任何需要实例的地方调用它?
  • 我应该将inflater实例存储在变量中供以后使用吗?
  • 我想我在SDK中看到了一些传递LayoutInflater的接口,他们为什么这样做?

2 个答案:

答案 0 :(得分:5)

  

getSystemService(String)是否快速,所以我可以在任何需要实例的地方调用它?

AFAIK,是的,虽然您可能想要运行测试并检查Traceview中的方法跟踪以确认。

  

我应该将inflater-instance存储在变量中供以后使用吗?

如果您处于紧密循环中,请在局部变量中挂起实例,而不是每次都创建调用getLayoutInflater()。否则,我不知道这是一次有价值的优化。

  

我想我在SDK中看到了一些传递LayoutInflater的接口,他们为什么这样做?

为您省去拨打getLayoutInflater()的麻烦。

答案 1 :(得分:1)

  

getSystemService(String)是否快速,所以我可以在任何需要的地方调用它   实例

您还可以使用inflater = LayoutInflator.from(this);来检索inflater。我个人发现使用这种方法编写的代码较少。

  

我应该将inflater-instance存储在变量中供以后使用吗?

可以存储在局部变量中。