2010-11-29 6 views
3

@ + idの+は、(R.id。???)リソースにidを追加するようにコンパイラに指示しています。しかし、+を置かないと得られるパフォーマンス上の利点があるかどうか疑問に思っていましたか?Android:@ idの性能を上回って@idを使用する利点はありますか?

たとえば、複雑なリストビューのレイアウトを扱うときはどうでしょうか?

+0

私はそうは思わない、唯一のパフォーマンスの向上は、コンパイル時にはアプリケーション自体に影響がないだろう。 – schwiz

+0

ありがとうございましたschwiz、私は誰もが質問自体に既に投稿したことを教えているので、質問を言い換える必要があるかもしれません。私は+が何を意味し、どのように使用するかを「知っている」。問題は "@ idより@idを使用してパフォーマンスが向上していますか?" – Emile

答えて

3

@言い換えれば、あなたはすでに既存のUI要素を参照していなくて、Rリストに追加相違ないことを意味します。 android:idを使用する場合は、常に@+id(私はそうだと思います)としてください。つまり、IDを割り当てることになります。それ以外の場合は、レイブリトンが言ったように、あなたはIDを参照しています。

しかし、Rもコンパイル時間前に生成されます。利益はわずかしかないだけでなく、実行時ではなくコンパイル時に発生するため、問題ではありません。

+0

Rはコンパイル時に生成されているという事実を釘付けにしていると思いますので、@ + idは@idと変わりません。アプリを実行しているときDoh。 – Emile

+0

'@ + id'と' id'の違いを説明しているアンドロイドのドキュメントにリンクできますか? (シンボルなので、Googleには難しい) – dinosaur

3

+は+ ID /!= @のID/

1

@ + idを使用すると、Rへの参照が追加されます。@idを使用すると、生成されたRクラスの既存の参照を再利用します。これは、たとえば、レイアウト内の特定のウィジェットをどこで見つけるかをアクティビティに通知するために行うことができます。これは、ListActivityでカスタムレイアウトを使用する場合と同じです。リストビューには、既に定義されている@ id/android:listの既存のIDを割り当てます。 TabHostとTabWidgetも同じです。

残りの部分は性能差がないと思います...

2

パフォーマンスの相違は全くありません。 IDの場合、 '+'を使用しない唯一の理由は、IDを明示的に宣言してそれを参照し、すべての参照をその特定のIDに確実にすることです。たとえば、 '+'を使用せずにID名にタイプミスがあった場合、コンパイル時エラーが発生しますが、 '+'でタイプIDの新しいエントリが作成されます。

関連する問題