使用Singleton vs扩展Application类

时间:2012-11-08 20:10:19

标签: java android singleton

我正在尝试确定在我的Android应用程序中实现对对象集合的访问的最佳方法。我需要所有活动才能访问我的对象列表,这些对象在启动时从服务器检索并在需要时刷新。让我们说它是特定用户的订单集合,它将显示在列表中并使用该应用程序进行更新。

我已经阅读了有关使用两者的原因的详尽解释,但我正在尝试为我的申请做出最佳决定。

- 不会在平板电脑上使用 - 它不会与其他Android应用程序交互

我实现了一个名为UserData的类,它扩展了Application类,并在应用程序加载时构造。可以通过将其转换为带有getApplicationContext()

的UserData类型随时检索它

这是最好的方法吗? 这两种方法都是首选,以便于在设备上本地存储数据,因此可以在应用程序运行时立即加载,然后在互联网连接可用时在后台刷新?

2 个答案:

答案 0 :(得分:0)

我的直接反应是你应该使用带有exported =“false”的内容提供者。对象中的数据肯定会持续存在,您可以随时更新它,即使设备没有连接,您也可以显示有用的数据。即使您的整个应用程序被终止,数据仍然存在。

我对在内存中“保留”数据犹豫不决,因为Android应用程序的世界充满了危险:)。系统不仅可以杀死我,而且用户愿意杀死任务(错误地认为他们以某种方式提高了性能)甚至关闭了手机。简而言之,除非我向文件系统写一些东西,否则我不能指望永久性。

请注意,您可以注册光标以观察内容提供程序中的更改,然后将光标调整为ListView。这样,只要数据发生变化,您就会收到通知。

除此之外,我会搜索“应用程序”,然后搜索“单身人士”并查看共识是什么。

答案 1 :(得分:0)

如果你决定不像@Joe Malin那样提到,请使用单身模型。保存数据不是应用程序类的责任。它是模型的作用。但请注意,如果您的应用程序进入后台,操作系统可以终止应用程序,您的模型将会死亡。只要应用程序位于前台,它就不会死亡。这可能包括您启动外部浏览器或视频播放器等内容。如果操作系统需要声明内存,那么应用和模型可能会在视频播放器完成时消失。