【发布时间】:2017-07-27 20:06:02
【问题描述】:
我只有一个类需要访问 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),我不希望 jerry-rig 这么多类。
那么,有没有办法让我在不修改几十个类并在我的代码周围传递上下文引用的情况下做到这一点,还是我被卡住了?
谢谢
【问题讨论】:
-
@Dusan WOAH ... 太甜了!!!这“安全”吗?
-
根据我的经验,是的,它是安全的。在几个应用程序中使用了这种方法 - 异步任务、后台线程,都使用相同的静态上下文,没有问题。
-
只要确保在初始化之前不要调用使用静态上下文的代码。
-
如果您想在活动之间更轻松地传递数据,您可以查看 EventBus
标签: android static-methods android-sharedpreferences