1

GooglePlacesAPIを使用するAndroidアプリを開発しています。

Google APIキーをアプリケーションコードから除外するために、私は自分の認証済みAPIサーバーからそれをフェッチし、アプリのさまざまな場所で必要になります。

それをメモリに保存/キャッシュする最良の方法は何ですか?

シングルトンを使用するだけでガベージコレクションが行われることを理解しています。クラスを拡張し、Applicationそこにメソッドを追加するのは良いメソッドですか?私が考えるかもしれない他の何か?

4

2 に答える 2

1

SharedPreferencesを使用する

プリファレンスに保存するには:

PreferenceManager.getDefaultSharedPreferences(context).edit().putString("MYAPIKEY",
      "myStringToSave").commit();  

保存された設定を取得するには:

PreferenceManager.getDefaultSharedPreferences(context).getString("MYAPIKEY",
     "defaultStringIfNothingFound"); 

コンテキストはあなたのコンテキストです。

サーバーから取得したら、保存します。その後、必要なときにいつでもアクセスできます。もちろん、アプリをアンインストールすると、そのコンテンツは削除されます。それ以外の場合は永続的です。

于 2012-10-13T08:27:01.607 に答える
0

VMは、クラスがまだ到達できる文字列参照をガベージコレクションできないため、文字列をシングルトンに保持して静的参照として保存できない理由がわかりません。Doomsknight が提案するように共有設定に保存することもできますが、これはメモリにキャッシュされません。共有プリファレンスは、永続ストアに XML ファイルとして保存されます (RAM で使用可能な値に対して)。それらから値が取得されます。

おそらく、2つの組み合わせが必要です。値を共有設定に保存し、アプリの起動時にメモリにキャッシュします。PreferenceManager 自体がメモリ内に何らかのキャッシュ メカニズムを持っているかどうかはわかりません。

于 2012-10-13T09:07:16.110 に答える