1. ホーム
  2. android

[解決済み] アンドロイドで定数を定義するには、静的クラス、インターフェース、xmlリソースのうちどれが一番良い方法ですか?

2022-11-28 11:56:26

質問

サーバーからデータを取得するためにWebサービスを使用するアンドロイドアプリケーションを開発しています。そのために、開発システム、テストサーバー、ライブサーバーを指す3つの異なるURLのセットを持っています。テスト用/ライブ用のアプリケーションを提供するたびにURLを変更するのは難しいので、私はそれを設定可能にすることを計画し、私の構築タイプの構成定数に基づいて、アプリケーションが適切なURLを取得できるようにしました。 というわけで。

  • この定数を保持するには、Javaの静的クラス、または それともxmlリソースファイルでしょうか? いつ?なぜですか?
  • どちらが良い性能を発揮するか? いつ?なぜ?

例:xmlリソース

<integer name="config_build_type">0</integer>
<string-array name="url_authentication">
    <item >http://development.com/xxxx</item>
    <item >http://test.com/xxx</item>
    <item >http://example.com/xxx</item>
</string-array>

Java静的定数

public class Config {
    public static final int BUILD_TYPE = 0; // 0 - development, 1 - test, 2 - live
    public static final String[] URL_AUTHENTICATION = {"http://development.com/", "http://test.com/", "http://example.com"};
}

どのように解決するのですか?

XML レイアウトでプロジェクト リソースを参照できるという点で、両者には大きな違いがあります。これらはアプリケーション コンテキストで使用できるため、グローバルなアプリケーション全体でアクセスできます。プロジェクト リソースを使用する最大の利点は、アクセスが簡単であることと、プロジェクトを大幅に整理できることです。

static final 定数はJavaバイトコードにコンパイルされ、プロジェクトリソースはapk内のバイナリ形式にコンパイルされます。どちらかにアクセスするのは非常に効率的です。この 2 つの間に違いがあるとすれば、それはせいぜい些細なことです。

プロジェクトでリソース/定数をどのように使用すべきかについて、決まったルールはありません。とはいえ、私自身は、XML で使用する必要がありそうな値にはリソースを使用します。 または java コードで使用する必要がある値にリソースを使用します。一方、私は通常 static final になるような値には定数を使います。 のみ で、私の実装に固有のものです。

また、デバイスの現在の設定(画面サイズ、ロケールなど)に応じて、実行時にXMLリソースをロードすることが可能であることに注意してください。そのため、定数を XML で宣言するか、直接 .java ファイルの中で直接宣言するかどうかを決める際には、この点を考慮する必要があります。