Android - 使用Singleton访问保留应用程序设置和Context

时间:2012-02-27 20:16:26

标签: android singleton sharedpreferences android-context

我需要访问Android应用中各种活动的设置。我想创建一个Singleton类,而不是在各种活动中搞乱SharedPreferences,而是使用Singleton中的SharedPreferences一次性获取所有设置。我还想在Singleton中使用方法来保存所需的设置,再次使用SharedPreferences。

这样做的问题是我需要一个Activity上下文来使用SharedPreferences。我可以将它传递给Singleton ..我已经读过内存泄漏并且对这样做很谨慎。

或者我是否完全咆哮错误的树,是否有更好的方法在活动之间共享应用程序设置?

2 个答案:

答案 0 :(得分:3)

您可以尝试:

public class SomeApplication extends Application {


    private static SomeApplication _instance;

    public SomeApplication() {
       super();
    }

    public static SomeApplication getInstance() {
       return _instance;
    }

    @Override
    public void onCreate() {
        super.onCreate();  
        _instance = this;
    }

    public SharedPreferences getPreferences() {
         return getApplicationContext().getSharedPreferences( SOME_PREFS_KEY, Context.MODE_PRIVATE );
    }

}

    .....
       SharedPreferences prefs =  SomeApplication.getInstance().getPreferences();
    ..... 

不要忘记manifest.xml

    <application android:label="@string/app_name" android:icon="@drawable/icon"
             android:name="SomeApplication"
       >

答案 1 :(得分:2)

至于在活动之间共享信息,您几乎有两个选择:

  1. Singleton Class,就像你建议的那样。
  2. 扩展Application课程     并将您的信息存储在那里(根据我的有限知识,是     某种抛光的Singleton)。
  3. 我个人使用Singletons来管理Android应用程序中的应用程序范围信息。我想告诉你两种方法的优点和缺点,但是它已经在互联网上进行了大量辩论;)This question在我进入Android编程并试图弄清楚如何分享时回答了我的所有问题我的应用程序中的信息以最智能的方式。

    我个人从来没有遇到任何问题将Context传递给单身人士,以便他们做与Shared Preferences相关的工作。我想你只需要小心你正在做什么,就像你正在编码的任何东西一样。