シンプルな「いいえ」の答えは私を落ち着かせます。違いがあるとすれば、それは何ですか?
4 に答える
いいえ
を呼び出す Activity または Window が を呼び出すgetLayoutInflater()
のと同じ Context を持っている限りgetSystemService()
、違いはありません。
証明LayoutInflater.from()によって返される LayoutInflater をトレースするgetLayoutInflater()
と、これがソース コードからの単なるショートカットであることがわかります。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;
}
少なくとも 1 つの状況があります。
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
対応するものの代わりに使用する必要があります
getLayoutInflater
その状況は、任意のオブジェクト クラスにあります。たとえば、クラス呼び出し objectA のインスタンスがあります。objectA で、ビューを親ビューにインフレートしたい (リストビューのカスタマイズされた行をインフレートする ArrayAdapter で発生します)。この場合、コンテキストに関連付けられたアクティビティやウィンドウがないため、 context.getLayoutInflaterは機能しません。その場合、 getSystemService(Context.LAYOUT_INFLATER_SERVICE)のみが適切です。
これは、LayoutInflater を定義する方法です。
LayoutInflater inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);
そしてgetLayoutInflater()
、LayoutInflaterを返すことにより、「ウィンドウがコンテキストから取得したLayoutInflaterインスタンスへのクイックアクセス」(ドキュメントから)を与えるだけです。
同様に、getSystemService(Context.LAYOUT_INFLATER_SERVICE)
このコンテキストでレイアウト リソースをインフレートするための LayoutInflater を取得するために使用されます。
したがって、実際には2つの間に違いはありません。
出典:ドキュメンテーション
番号。
まったく違いはありません。