【问题标题】:Where should I store data that can be accessed outside of the view thread?我应该在哪里存储可以在视图线程之外访问的数据?
【发布时间】:2015-02-24 21:01:24
【问题描述】:
我正在使用 IntentServices 调用一个 restful 服务,然后将结果交给接收者。后端需要一个用户 ID 和身份验证令牌,我将其存储在一个单例类中。当进程终止时,我遇到了清理这个单例的问题,并且当 Android 尝试重新启动我的活动时,它的数据不在身边。用户偏好似乎是开始此类数据的好地方,但需要参考您的上下文。
我可以将这些数据放在哪里,以便在视图之外访问?我意识到我可以将它与触发我的 IntentService 的每个 Intent 一起传递,但我希望有更好的方法。
谢谢!
【问题讨论】:
标签:
android
android-preferences
android-intentservice
【解决方案1】:
Service 是一个 ContextWrapper,它是一个 Context,因此您可以在获取共享首选项的实例时使用关键字 this。
【解决方案2】:
对于一些字符串等轻量级数据,SharedPreferences 很好。只需传递任何上下文,每个组件都有一个或本身就是一个。或者传递应用程序上下文。缺乏上下文不应该是一个问题。将它作为参数传递给你的单例。
使用数据库,或发明使用文件的专有存储机制,或创建内容提供者,对我来说似乎都过大了。
【解决方案3】:
如果您不想一直传递它(这还不错),并且仍想保持 Android 框架理念,请为此任务创建一个 ContentProvider。
或者你可以完全古典并将它们保存在某个文件中。或者在 sqlite 数据库中(Android 对此提供了简单的支持)。