Android首选模式来存储全局需要的对象

Android首选模式来存储全局需要的对象,android,Android,我读过类似的问题,但还没有找到最好的解决办法。例如,我在应用程序启动时从服务器加载用户数据。这些信息后来在许多应用程序组件中使用。我觉得将其存储在singleton中(例如,在应用程序中)并使其在全球范围内可接受并不舒服。我可以考虑的其他选择是将其存储在共享首选项中作为JSON或存储在数据库中。但这些方法可能会导致性能下降。如何解决此常见问题?如果要访问所有活动的数据,可以尝试创建扩展活动的基本活动,然后使用基本活动作为其他活动的基类 public class MainActivity exte

我读过类似的问题,但还没有找到最好的解决办法。例如,我在应用程序启动时从服务器加载用户数据。这些信息后来在许多应用程序组件中使用。我觉得将其存储在singleton中(例如,在应用程序中)并使其在全球范围内可接受并不舒服。我可以考虑的其他选择是将其存储在共享首选项中作为JSON或存储在数据库中。但这些方法可能会导致性能下降。如何解决此常见问题?

如果要访问所有活动的数据,可以尝试创建扩展活动的基本活动,然后使用基本活动作为其他活动的基类

public class MainActivity extends BaseActivity
然后是基本活动

public class BaseActivity extends Activity

在BaseActivity中,将所有值存储为全局变量,然后这些变量可以由扩展基本活动的每个活动传递。似乎最好的方法是扩展应用程序类并在中添加全局变量,下面的另一个堆栈溢出问题可能会有所帮助:

另外,如果您查看应用程序类的javadoc,它会说clear for global Application state use

用于需要维护全局应用程序状态的基类。您可以通过在AndroidManifest.xml的标记中指定其名称来提供自己的实现,这将导致在创建应用程序/包的流程时为您实例化该类


查看完整的Javadoc

我认为您应该使用共享首选项使数据在整个应用程序中可用。或者,您可以将数据存储在内存或缓存中。取决于数据量,取决于您是否希望它在会话之间可用


请阅读以了解您的选项概述。

我觉得将其存储在singleton中并不舒服。在我看来,你至少应该解释一下为什么你不喜欢使用这样的常用方法。如果您有任何特定的限制,它可能会帮助您获得更好的答案。嗯,我认为每次都将对象保留在应用程序singleton和cast应用程序中是非常难看的,但如果文档中这么说,那就这样吧!谢谢