0

Android のソース コードで次の宣言を目にすることがあります。

mContext.getString(2131361954);
Notification n = new Notification(2130837696, "123", System.currentTimeMillis());

// Example code - does not match together

数字はプロジェクトのリソースだと思いますよね?Rクラスを使用する代わりに、この数値を使用することがあるのはなぜですか? それはより速いですか、それとも何か他のものですか?

また、どのリソースがその番号に割り当てられているかを確認するにはどうすればよいですか? ファイルしか持っていない場合に使用される番号を取得することは可能ですか、それともこの番号はランダムですか? おそらく、ファイル名やファイルの MD5 ハッシュなどでしょうか?

4

1 に答える 1

3

R クラスのすべてのメンバーは static かつ final であり、コンパイル時に直接スワップインされるため、パフォーマンスの違いはありません。これは、Rxy を使用するすべてのコードと同等であるため、パフォーマンスは同じです。

リソースの追加、削除、および変更中に変更される可能性があるため、プロジェクトで数値を直接使用しないことを強くお勧めします。

その番号が対応するリソースを確認するには、それを 16 進数に変換し、R.java ファイルを開いてその 16 進数を検索し、割り当てられているものを確認します。

実行時に ID を使用getResources().getResourceEntryName(int resid);して渡すことで、ファイル名を取得することもできます。

于 2013-08-24T23:46:41.457 に答える