Bundle
以下のようなインターフェースで、キーのような関連する定数のセットを一緒に定義するために使用しました:
public interface From{
String LOGIN_SCREEN = "LoginSCreen";
String NOTIFICATION = "Notification";
String WIDGET = "widget";
}
これにより、関連する定数をグループ化し、静的なインポート(実装ではない)を使用してそれらを使用するより良い方法が得られます。私が知っているAndroid
フレームワークはまた、のような同じように定数を使用していますToast.LENTH_LONG
、View.GONE
。
しかし、私はしばしばJava Enums
、定数を表すためのはるかに優れた強力な方法を提供していると感じています。
しかし、での使用enums
にパフォーマンスの問題はありAndroid
ますか?
少し調べただけで混乱してしまいました。この質問から、
「Aint Enums Where You Only Ints Needs」がAndroidのパフォーマンスのヒントから削除されましたか?「Avoid enums」がパフォーマンスのヒントからGoogle
削除されたことは明らかですが、公式のトレーニングドキュメントからメモリオーバーヘッドセクションに注意してください:「列挙型多くの場合、静的定数の2倍以上のメモリが必要です。Androidでの列挙型の使用は厳密に避けてください。」これはまだ有効ですか?(1.6以降のバージョンなど)Java
私が観察したもう1つの問題は、シリアル化して送信する必要があることenums
をintents
使用しBundle
て送信することです(つまりputSerializable()
、プリミティブputString()
メソッドに比べて高価な操作だと思いますが、enums
無料で提供しています)。
誰かが同じものを表現するのに最適な方法を明確にできますかAndroid
?私は厳密には使用しないでくださいenums
にAndroid
?
Enum.ordinal()
代わりに使用してintとして渡すことができます。