2016-08-19 13 views
0

要件ごとに、私のString.xmlファイルのすべての値がサーバーから取得されるようになりました。
そして私はアプリケーションで同じものを扱う必要があり、これらの値は動的です。これを行うための推奨方法は何ですか。
これらの値をデータベースに保存すると、アプリケーションの起動時にハッシュマップにデータがキャッシュされ、アプリケーション全体でマップが使用されます。私はバックグラウンドでデータベースを更新するサービスを作った。Androidは実行時にString.xml値を置き換えますか?

これよりも良い方法はありますか?

+0

どのような種類の動的文字列値がサーバから来るのですか? –

+0

shared prefernecesは有用かもしれません。サーバーからデータを取得し、共有プリファレンスの値を使用すると共有設定値を更新します。 –

+0

私はあなたがそれを行うことはできないと考えています。それらはハードコードされており、動的に変更することはできません – Tasos

答えて

1

問題を解決するには、共有設定またはローカルデータベースのいずれかを使用します。

String.xmlを更新することは、プログラミングの良い方法ではありません。

共有設定は、問題の解決に最適で、使いやすいです。あなたがここで理解しなければならないものを

Shared Preferences Example

+0

実行時にstring.xmlを更新することはできません –

+0

しかし、共有環境設定の代わりにデータベースを更新するのは簡単です。特定の文字列リソースを更新するのは簡単です。 – user3586231

+0

R.javaファイルの値を変更することはできませんR.javaファイル –

2

ことの一つは、あなたがリソースとしてデータを提供する場合、それは実行時に変更することができない、ということです。たとえば、ドロウアブルフォルダ内のドロワブルは、実行時には変更できません。正確に言えば、 "res"フォルダはプログラムで変更することはできません。

これはStrings.xmlにも当てはまります。つまり、「値」フォルダに適用されます。実行時に変更する必要のある文字列が必要な場合は、別のクラスを作成し、文字列をこのクラスに配置して実行時にアクセスさせます。これは私が見つけた最良の解決策です。

+0

を読んでください私が知っているように、これらの文字列の値がサーバから制御されているため、私が従う方法はこれよりも優れています。これを対応して。私はこの問題に関連する多くの質問を見てきました。 – user3586231

+0

私はまた、手元にある質問に答えようとしています。「これよりも良い方法がありますか?」 –

0

あなたはhashmapを使用する以外は正しい方法を実装していると思います。データが大きかったり、将来大きくなると、アプリの速度が低下します。 arrayを使用し、そのインデックスに直接アクセスして文字列を取得することができます。ありがとう。

+0

しかし、ハッシュマップでの検索は、Array-listより高速です。 – user3586231

+0

いくつかのリンクを教えてください。配列では、indexを使用して要素に直接アクセスできますが、ハッシュマップではアクセスできません。 – Ramit

+0

さて、私に説明させてください。その配列を検索する必要はありません。インデックスを知っているので、その位置で要素に直接アクセスして使用することができます。私は、このアプローチを使用することによって、長期間にわたってパフォーマンスを向上させることを意味します。私は説明したいと思っています。 – Ramit

関連する問題