21

コンパイル時に環境 (デバッグ、preprod、prod、release など) によって変化する可能性があるグローバル定数を格納するためのベスト プラクティスは何かを知っています。

iOS では、すべてのグローバル定数をヘッダー ファイルに保持し、プリプロセッサ マクロで変更していました。この回答を参照してください:

iOS アプリケーションでグローバル定数を保存する場所は?

Android にはどのソリューションを使用すればよいですか?

4

6 に答える 6

26

基本パッケージ フォルダーにクラス定数を作成します。

(またはクラスの代わりにインターフェイスを作成して、毎回クラスを参照する必要がないようにします。ただし、これはコードの読みやすさのために悪い習慣

ですが、機能します) 値を入力 しpublic static finalます。

さらに、 と の両方をclassとしてinterface宣言することもできますabstract

于 2013-02-25T12:42:37.013 に答える
2

定数の値が環境 (密度、ロケールなど) に依存する場合は、それらを格納するためのリソース (整数、文字列、次元など) を使用する必要があります。

別のケースでは、グローバル定数を 1 つのファイルに入れる (ベスト プラクティス - 定数のすべてのセットにプレフィックスを使用する) か、関連するクラスにローカル定数を入れることができます (たとえば、インテントはフラグ、エクストラ、カテゴリなどを保持します)。

于 2013-02-25T13:05:58.737 に答える
2

もう 1 つの解決策は、リソース ファイルを使用することです (文字列値のみを格納することに満足している場合)。

これは、このアプリケーションが管理するアカウントなどの定数を格納するために使用できます。

元。WelcomeActivity.java

AccountManager am = AccountManager.get(WelcomeActivity.this);
Account account = am.getAccountsByType(getResources().getString(R.string.ACCOUNT_TYPE))[0];

元。res/values/strings.xml

<resources>
    <string name="ACCOUNT_NAME">com.acme.MyAccountSignature</string>
</resources>

これにより、再コンパイルせずにこれを変更することもできます (通常、strings.xml ファイルを使用して翻訳を分離する方法と同様)。

于 2016-11-12T17:29:33.640 に答える
2

次のように、それらを別の Java ファイルで使用public static final values.および保持します。

    static String QC    = "http:/************";
    static String DEV   = "http:/************";
    static String CLOUD = "http:/************";


    static String SERVICEURL = CLOUD ; //Use this SERVICEURL in your code at run time
于 2013-02-25T17:06:22.603 に答える
2

かなりシンプルなソリューションはこちら

public class Constants {
    /**
     * Object key prams when pass the json object from server.
     */
    public static final String KEY_EMAIL = "email";
    public static final String KEY_PASSWORD = "password";
    public static final String KEY_DEVICE_TOKEN = "device_token";
    public static final String KEY_DEVICE_TYPE = "device_type";
    public static final String KEY_NAME = "name";
    public static final String KEY_COUNTRY_CODE = "country_code";
    public static final String KEY_PHONE_CODE = "phone-code";
    public static final String KEY_GENDER = "gender";
    public static final String KEY_DATE_OF_BIRTH = "date_of_birth";
    public static final String KEY_USER_ID = "user_id";
    public static final String KEY_LIMIT = "limit";
    public static final String KEY_DRIVER_ID = "driver_id";
    public static final String KEY_LONGTITUDE = "logitude";
    public static final String KEY_LATTITUDE = "lattitude";
    public static final String KEY_RATING = "rating";
    public static final String KEY_DETAILS = "details";
    public static final String KEY_ACCESS_TOKEN= "access_token";
    /**
     * Fragments name
     */
    public static final String FRAG_ETA = "ETA";
    public static final String FRAG_ACCOUNT_FRAGMENT = "ACCOUNT_FRAGMENT";
    public static final String FRAG_SETTING_FRAGMENT = "SETTING_FRAGMENT";
    public static final String FRAG_MAP_FRAGMENT = "MAP_FRAGMENT";
    public static final String FRAG_FEEDBACK = "FEEDBACK";
    public static final String FRAG_RATE_FRAGMENT = "RATE_FRAGMENT";

    public static final String USA_CODE = "+1";

    public static final String DISTANCE_SEARCH = "DISTANCE_SEARCH";


}

ハッピーコーディング

于 2019-03-02T11:02:34.163 に答える