私はSharedPreferencesにアクセスする必要があるだけで一つのクラスがあります。私はこの試みたコンテキスト参照を渡さずにクラス内の静的メソッドからAndroid SharedPreferencesにアクセスするにはどうすればよいですか?
public class MyUtils {
public static String packageMe(Object input){
// do stuff here
// need SharedPreferences here
}
public static Object unpackageMe(String input){
// do stuff here
// need SharedPreferences here
}
}
を:
public class MyUtils extends Activity
をしかし、あなたが知っているように、私は静的メソッドからSharedPreferencesにアクセスすることはできません。
私は静的メソッドにコンテキストを渡して考えたが、それは私が変更する必要があります4つのうちのクラスの数を拡張し、クラスがすでにAsyncTaskを拡張されています
public class SomeClass01 extends AsyncTask {
@Override
protected Object doInBackground(Object[] params){
MyUtils.packageMe(abc_123_object);
// do stuff here
}
}
ので、おそらく私はこれらの4つのクラスに文脈を渡すことができると思った。しかし、私はこれらの4つのクラスを使用するように変更する必要がある数十のクラスがあります。つまり、そのクラスを使用します。
public class SomeTopClass extends FragmentActivity implements x, y, z {
new SomeClass01.execute(abc_123_object);
// do stuff here
}
コンテキスト参照を自分のコードの深いところに渡したいと思っているのかどうかわかりません。
SharedPreferencesへの参照を私のabc_123_objectモデルに置くことについてStackOverflowで見ましたが、(abc_123_object以外の)私が使用するかなりのオブジェクトがあります。ジェリーリグにたくさんのクラスを持たせたくありません。
これは、何十ものクラスを変更したり、コードの周りにコンテキスト参照を渡したりすることなく、これを行う方法ですか?
おかげ
を見てみましょう:かなり甘いですhttps://stackoverflow.com/a/5114361/461810 – Dusan
@Dusanすごい迫力...を!これは "安全"ですか? – Brian
私の経験から、はい、それは安全です。 このアプローチは、いくつかのアプリケーションで使用されています - 非同期タスク、バックグラウンドスレッド、すべて同じ静的コンテキストを使用し、問題なし。 – Dusan