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

时间:2015-02-24 21:01:25

标签: android android-preferences android-intentservice

我使用IntentServices来调用一个宁静的服务,然后将结果转交给接收者。后端需要用户ID和身份验证令牌,我将其存储在单例类中。我在流程终止时遇到了清理这个单例的问题,当Android尝试重新启动我的活动时,它的数据也没有。用户首选项似乎是启动此类数据的好地方,但这些需要引用您的上下文。

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

谢谢!

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

对于轻量级数据,如几个字符串等,SharedPreferences很好。只需传递任何上下文,每个组件都有一个或一个本身。或者传递应用程序上下文。缺乏背景不应成为问题。将它作为参数传递给你的单身人士。

使用数据库,或使用文件发明专有存储机制,或创建内容提供商,对我来说都显得过于苛刻。

答案 2 :(得分:0)

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

或者你可以完全经典并将它们保存在某个文件中。或者在sqlite数据库中(Android为此提供了简单的支持)。