我应该在哪里存储可以在视图线程之外访问的数据?

Where should I store data that can be accessed outside of the view thread?

我正在使用 IntentServices 调用 restful 服务,然后将结果交给接收者。后端需要用户 ID 和身份验证令牌,我将其存储在单例 class 中。我已经 运行 解决了这个单例在进程终止时被清理的问题,并且当 Android 试图重新启动我的活动时它的数据不存在。用户偏好似乎是开始此类数据的好地方,但这些需要参考您的上下文。

我可以将这些数据放在哪里以便在视图之外访问它?我意识到我可以将它与触发我的 IntentService 的每个 Intent 一起传递,但我希望有更好的方法。

谢谢!

如果您不想一直传递它(这不是那么糟糕),并且您仍想保持 Android 框架理念,请为此任务创建一个 ContentProvider。

或者你可以选择完整的古典音乐并将它们保存在某个文件中。或者在 sqlite 数据库中(Android 对此提供简单的支持)。

Service 是一个 ContextWrapper,它是一个上下文,因此您可以在获取共享首选项的实例时使用关键字 this。

对于一些字符串等轻量级数据,SharedPreferences 就可以了。只需传递任何上下文,每个组件都有一个或本身就是一个。或者传递应用上下文。缺乏上下文应该不是问题。将它作为参数传递给您的单例。

使用数据库,或者发明一种使用文件的专有存储机制,或者创建一个内容提供者,对我来说似乎都太过分了。