我们假设我们使用网络授权开发了一款应用。我们需要一些"全球"用于确定用户是否已记录的服务。如果用户已登录,则该服务必须向身份用户提供一些数据(例如cookie,身份验证令牌等),否则该服务必须能够设置此数据。
有几种方法可以做到这一点。我们可以使用静态上下文(单例或仅静态字段)来存储此数据。我们也可以创建一些服务来获取所有这些数据。
但谷歌推荐的方式是什么?什么方式在思想上是正确的?也许有其他方法可以实现它?
答案 0 :(得分:1)
不知道Google推荐的是什么,但如果您需要的对象只要您的应用程序存在,那么它就是Application
对象。
因此,您自己的MyApplication
extends Application
是子类,在那里定义您需要的任何字段,然后在MyApplication
(MyApplication)getApplication()
答案 1 :(得分:0)
创建描述您的应用模型的经理(单身模式)。是的,请确保它不包含活动,服务等的上下文。如果需要上下文,请务必致电getApplicationContext()。
答案 2 :(得分:0)
Singelton是最简单的方式(+设计模式)
但是有时候使用singeltons时可能会出现问题:如果应用程序进程被杀死,这种情况几乎无疑会在后台留下太长时间,你的单例将被重新创建,所以你的私有int数据将重置为默认值。
如果您不想使用过多的共享数据,可以使用共享偏好来避免这种情况。
否则你可以尝试扩展Application类。
希望帮助