我只有一個班,我需要訪問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。
我想到的背景下,傳遞到靜態方法,但延長的班列四,我將需要修改的數量和類別已經擴大的AsyncTask:
public class SomeClass01 extends AsyncTask {
@Override
protected Object doInBackground(Object[] params){
MyUtils.packageMe(abc_123_object);
// do stuff here
}
}
所以,我認爲也許我可以將這種情況傳遞給這四個班級。然而,有幾十個類需要修改,使用這四個類,然後使用這個類。
public class SomeTopClass extends FragmentActivity implements x, y, z {
new SomeClass01.execute(abc_123_object);
// do stuff here
}
我不知道我是否想傳遞深入我的代碼的上下文引用。
我在StackOverflow上看到了關於在我的abc_123_object模型中引用SharedPreferences的引用,但也有相當多的對象使用(除了abc_123_object),我不想讓這麼多類。
那麼,有沒有辦法讓我做到這一點,而無需修改幾十個類,並在我的代碼周圍傳遞上下文引用,或者我卡住了?
感謝
看看的:https://stackoverflow.com/a/5114361/461810 – Dusan
@Dusan哇...這是非常甜蜜!這是「安全」嗎? – Brian
從我的經驗來看,是的,這是安全的。 在一些應用中使用這種方法 - 異步任務,後臺線程,全部使用相同的靜態上下文,沒有問題。 – Dusan