获取LayoutInflater的最快方法

时间:2015-10-07 13:43:20

标签: java android layout-inflater

我可以使用:

获取LayoutInflater
inflater = LayoutInflater.from(context);

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

哪种方式更快且推荐?

2 个答案:

答案 0 :(得分:2)

第二个版本将(稍微)更快,因为第一个版本涉及方法查找(参见下面的代码)。为了清晰/可维护性,第一个版本更可取。

    /**
     * Obtains the LayoutInflater from the given context.
     */
    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;
    }

参考:LayoutInflator.java

答案 1 :(得分:1)

我没有这个问题的答案,但我可以提出一个方法来找出答案。您应该剖析这些方法,并亲自了解哪一方法最快。

你可以这样做:

long startTime = System.nanoTime();
inflater = LayoutInflater.from(context);
long endTime = System.nanoTime();
long duration = (endTime - startTime);  //divide by 1000000 to get milliseconds.

运行它几次并记下或保存返回的时间,然后运行另一个功能,看看哪个预先形成最快

long startTime = System.nanoTime();
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
long endTime = System.nanoTime();
long duration = (endTime - startTime);  //divide by 1000000 to get milliseconds.

现在你知道如何分析你想要的任何方法,看看哪一个更快执行!