103

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

  • この定数、Java 静的クラス、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"};
}
4

8 に答える 8

96

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

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

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

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

于 2012-06-22T06:04:19.757 に答える
13

一般的なケース:

  • XML 値には、java ファイルの定数よりもレイアウト ファイルとマニフェスト ファイルでアクセス可能という利点があります。
  • XML 値には、Java ファイルの定数よりも多言語サポートの利点があります
于 2012-06-22T05:45:05.593 に答える
2

アプリ コードから UI 文字列を抽出し、外部ファイルに保持することを常にお勧めします。Android では、各 Android プロジェクトのリソース ディレクトリを使用してこれを簡単に行うことができます。

http://developer.android.com/training/basics/supporting-devices/languages.html

于 2012-06-22T06:27:07.700 に答える
2

どちらの方法も良いように思えますが、要件によって異なります。

XML に値 (Web サービス リンク) があり、値 (Web サービス リンク) に変更があると仮定すると、XML ファイルでのみ簡単に変更できます。

ただし、内部クラスを静的変数として使用する場合は、すべてのクラス ファイルを変更する必要があります。

したがって、私の提案は、ソースファイルから定数を分離し、リソースに入れてアクセスすることです..

于 2012-06-22T06:36:17.763 に答える
-1

誰かがこれを聞いてくれてうれしいです...プラスワン!

プロジェクト リソースは Context にアクセスする必要があります。これは静的メソッドでは利用できませんが (渡さない限り)、Activity では常に利用できます。リソースとレイアウトの間に優先的な接続があるようです。静的メソッドで処理されるアプリの変数と定数については、抽象クラスを作成し、他のすべてのプロジェクト クラス ファイルで (この定数クラスの) 静的インポートを行います。

PVS

于 2012-11-28T16:44:29.253 に答える