我正在使用 IntentServices 调用一个安静的服务,然后将结果交给接收者。后端需要一个用户 ID 和身份验证令牌,我将其存储在一个单例类中。当进程终止时,我遇到了清理这个单例的问题,并且当 Android 尝试重新启动我的活动时,它的数据不在身边。用户偏好似乎是开始此类数据的好地方,但这些需要参考您的上下文。
我可以将这些数据放在哪里,以便可以在视图之外访问它?我意识到我可以通过触发我的 IntentService 的每一个 Intent 来传递它,但我希望有更好的方法。
谢谢!
我正在使用 IntentServices 调用一个安静的服务,然后将结果交给接收者。后端需要一个用户 ID 和身份验证令牌,我将其存储在一个单例类中。当进程终止时,我遇到了清理这个单例的问题,并且当 Android 尝试重新启动我的活动时,它的数据不在身边。用户偏好似乎是开始此类数据的好地方,但这些需要参考您的上下文。
我可以将这些数据放在哪里,以便可以在视图之外访问它?我意识到我可以通过触发我的 IntentService 的每一个 Intent 来传递它,但我希望有更好的方法。
谢谢!
Service是一个 ContextWrapper,它是一个 Context,因此您可以在获取共享首选项的实例时使用关键字 this。
对于一些字符串等轻量级数据,SharedPreferences 很好。只需传递任何上下文,每个组件都有一个或本身就是一个。或者传递应用程序上下文。缺乏上下文不应该是一个问题。将它作为参数传递给你的单例。
使用数据库,或发明使用文件的专有存储机制,或创建内容提供者,对我来说似乎都是多余的。
如果您不想一直传递它(这还不错),并且您仍然想停留在 Android 框架理念中,请为此任务创建一个 ContentProvider。
或者你可以完全古典并将它们保存在某个文件中。或者在 sqlite 数据库中(Android 对此提供了简单的支持)。