1

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

我已经阅读了有关使用两者的原因的详尽解释,但我正在尝试确定最适合我的应用程序的方法。

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

我已经实现了一个名为 UserData 的类,它扩展了Application该类并在应用程序加载时构建。可以随时通过将其转换为 UserData 类型来检索它getApplicationContext()

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

4

2 回答 2

0

我的直接反应是您应该使用exported="false" 的内容提供程序。对象中的数据肯定会保留,您可以随时更新它,并且即使设备没有连接,您也可以显示有用的数据。即使您的整个应用程序被杀死,数据仍然存在。

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

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

除此之外,我会搜索“Application”,然后搜索“Singleton”,看看共识是什么。

于 2012-11-08T21:10:01.177 回答
0

如果您决定不按照@Joe Malin 提到的那样做,请使用单例模型。保存您的数据不是应用程序类的责任。这是模特的角色。但是请注意,如果您的应用程序进入后台,操作系统可能会终止该应用程序并且您的模型将会死掉。只要应用程序在前台,它就不会死。这可能包括您启动外部浏览器或视频播放器之类的事情。如果操作系统需要申请内存,您的应用程序和模型可能会在视频播放器完成时死掉。

于 2012-11-08T21:25:16.753 回答