0

私は自分のアプリに対して多くの共通の好みを持っており(主に色のカスタマイズに関連しています)、実行時にそれらを保存/使用するのに最適な方法がわかりません。

現在、私はすべてのアクティビティ/フラグメントで次のようなことを行っています(ビューに応じて多かれ少なかれ好みがあります)。

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getActivity());
int buttonbg = settings.getInt("buttonmenu_bg", 0);
int buttontxt = settings.getInt("buttonmenu_txt", 0);
int headerclr = settings.getInt("header", 0);

そして、それらを使用して、ディスプレイのさまざまな色を設定します。これは、毎回PreferenceManagerを呼び出して、すべてを実行する必要があるため、多くのオーバーヘッドのように思われます。

そこで、アプリケーションクラスの作成、設定の読み取り、アクティビティ/フラグメントのアプリケーションクラスの静的変数を使用して表示を設定することを検討し始めました。

私の質問は、アプリケーションクラスパスをさらに進む前に考慮すべき、これを行うことの欠点や落とし穴はありますか?

4

3 に答える 3

2

それほど多くの静的変数を使用していない場合、これはアプリケーションに影響を与えない可能性があります。静的データの代わりに何も見つからない (null) 場合があります。

于 2012-05-30T14:00:30.757 に答える
0

で表示色を設定しない特別な理由はありますres/values/styles.xmlか?

于 2012-05-30T14:17:34.877 に答える
0

Applicationクラスの目的は、グローバルなアプリケーションの状態またはデータを (もちろんメモリ内に) 格納することなので、アプローチは正しいです。私はそれを複数回使用しましたが、それは魅力のように機能します。

私が通常行っていることは、Map メンバー変数を作成し、それに値を取得および設定するためのメソッドを提供することです。次のようになります。

package com.test;
...
...
public class MyApp extends Application{

    private Map<String, Object> mData;

    @Override
    public void onCreate() {
        super.onCreate();
        mData = new HashMap<String, Object>();
    }

    public Object get(String key){
        return mData.get(key);
    }
    public void put(String key,Object value){
        mData.put(key, value);
    }
}

それから私の活動から、私はただやります((MyApp) getApplication()).get("key")または((MyApp) getApplication()).put("key",object). また、マニフェスト ファイルの次のタグandroid:nameの下に属性を設定することを忘れないでください。application

<application
        ...
        ...
        android:name="com.test.MyApp"> 
</application>
于 2012-05-30T14:23:22.987 に答える