最近在做单页面的 web app ,处理不同 view 之间的切换折磨死我了。想听听其他平台是怎么做的。
比方讲 app 是这样一个树形结构:
{
电视剧: {
美剧,
日剧,
},
电影: {
中国电影,
美国电影,
}
}
刚进入程序的时候,我在电视剧这个 view 。
点击美剧,新的 view 出来。这个新的 view 是在点击的时候创建并且渲染的吗?不管 ios 还是 android ,几乎都是点击的瞬间新的 view 就以动画的方式进来了,如果是新创建的,那渲染速度岂不是非常快。
切换到电影,进入中国电影,再切换回电视剧,这时候我还在美剧这个 view :
点击后退,后退到的是电视剧。也就是说后退是回到当前 view 的上一级,而不是之前的 view 。回到上一级这个机制是需要开发者写死后退的位置,还是需要开发者提供系统一个像上面那样的树形机构,又或者系统智能到帮你搞定一切?
从美剧后退到电视剧之后,之前电视剧 view 的各种状态没有变。这时候再进入美剧,美剧 view 的状态丢失了。看上去像是系统保存了一个栈 [viewA, viewB, viewC...]
。只有栈尾的 view 会被显示,之前的都被隐藏着。回到上一级就是 pop 掉最后一个。进入新 view 就是往里头 push 一个。 push 进去的新东西会被重新渲染。重新渲染丢状态,而隐藏不会。所以回到上一级不会丢状态。但是在电视剧和电影两个大区块之间切换的时候不会出现丢状态的情况。所以我猜想可能系统对树的每一个分支都单独保存了这么一个栈?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.