我可以使用:
获取LayoutInflaterinflater = LayoutInflater.from(context);
或
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
哪种方式更快且推荐?
答案 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;
}
答案 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.
现在你知道如何分析你想要的任何方法,看看哪一个更快执行!