0

我正在为 iOS 开发 MonoTouch 应用程序。

该功能的很大一部分是用户需要在数据页面(屏幕)之间连续滑动并来回切换。

我需要记住内存消耗,所以我的想法是我一次只能有几个屏幕在内存中。例如,延迟加载仅提前 1 个屏幕,所以当用户滑动到它时它是可用的。(或滑动时延迟加载)。

当用户滑回他们所在的上一页时,我需要确保该页面仍在内存中并且没有离开内存。落后的页面,一旦用户向后滑动,我就可以懒惰地重新加载。因此,如果用户有一段时间没有查看屏幕,我将需要一种机制将屏幕发送到 GC,并在用户滑动到该页面时自动加载它们。

我正在考虑创建一个对象列表,其中每个对象都有关于在视图上显示什么的信息以及对实际视图本身的引用。如果此引用为空,我知道要创建视图。如果引用存在且未处理,我可以向用户显示现有引用。当用户左右滑动时,我可以转到列表中的下一个(或上一个)项目并执行相同的操作。检查它是否有视图引用并加载该视图,或者创建它。

性能是这里的关键,因为用户可能会在数百个(或更多)屏幕上滑动。

关于速度和内存管理的最佳架构有什么想法吗?

4

1 回答 1

0

如果可能,关键是重用视图。在我的应用程序中,我向左/向右滑动类似于我认为你想要的,我只需要创建最多三个视图:一个用于“屏幕上”,然后是右/左屏幕外(尽管在需要之前不会创建左)。

您可以通过在线程中尽可能多地与您的页面构建相关并且只需在主线程上更新 UI 来获得非常有创意的东西。此外,在加载新数据集之前,我肯定首先关注即将可见的页面,然后再移动到右侧不可见页面,如果有意义,则离开不可见页面。当用户滑动到新页面时,视图会被重用并在更大的 UIScrollView 内容区域中移动。

于 2012-11-18T23:47:51.973 回答