如何在Activity之外使用sharedPreferences?

我已经坚持这个非常简单的问题几个小时了,我一直无法通过谷歌find任何合适的解决方案。

我试图在我的应用程序的模型层中使用SharedPreferences类。 具体来说,我希望能够在应用程序启动时保存或获取用户名和相应的令牌(如果用户将应用程序设置为自动登录)。

有没有办法让我使用SharedPreferences来解决这个问题,还是我被迫使用FileInput / Output?

你在哪里实例化你的Model类?

只需将上下文或SharedPreferences传递给构造函数:

public class Model { private final Context context; private final SharedPreferences sharedPrefs; public Model(Context context) { this.context = context; sharedPrefs = context.getSharedPreferences("name", 0); } private String doSomething(){ return sharedPrefs.getString("key", "defValue"); } } 

SharedPreferences不是仅从Activity调用,而是从Context调用( Activity扩展),因此您也可以使用应用程序上下文。

您可以使用包含Context的任何代码中的SharedPrederence。 从http://developer.android.com/reference/android/app/Activity.html上的“活动”文档中:

使用方法getPreferences(int)管理活动持久状态,允许您检索和修改与活动关联的一组名称/值对。 要使用跨多个应用程序组件(活动,接收器,服务,提供程序)共享的首选项,可以使用基础Context.getSharedPreferences()方法检索以特定名称存储的首选项对象。 (请注意,无法跨应用程序包共享设置数据 – 因此您需要内容提供程序。)