Android:如何实现详情页的状态保存?

LinJZong 发布于 2015/06/24 21:57
阅读 698
收藏 0

场景是这样的:有一个列表页ActivityA,点击列表项会跳转到详情页ActivityB,这个ActivityB的内容是需要去服务端请求的,数据量大,而且结构复杂,即请求需要花费较多时间,数据解析和界面绘制也需要花费较多时间。现在想做一个效果是,点击列表项的某一项跳入ActivityB之后,假如点击返回,希望不销毁这个ActvityB,再在ActivityA中点击同一列表项时,直接打开原来的ActivityB,不需要请求和绘制。

这个场景可参考百度贴吧的贴吧和帖子功能,点击某个帖子返回后,再点击同一个帖子,是可以直接打开并且停留在上一次读取的位置的。

当然,上述场景,假如在ActivityA和ActivityB都是唯一的时候会很简单,只需要将两者都设置为singleInstance,ActivityB的关闭操作重写为startActivity ActivityA就行了,然后在ActivityB中通过item项的ID决定是否需要重新请求绘制,但问题是ActivityA和ActivityB是嵌套关系,即在ActivityB中点击某个按钮可能再打开一个不同内容的ActivityA,这样singleInstance就无法实现了。

另外一种想法是将ActivityB做成View的形式,放在ActivityA内,这样似乎可行,但总觉得不是最佳方案。

加载中
0
不在济南
不在济南
我也遇到了同样的问题,请问你现在找到解决方案了吗
0
拉风的道长
拉风的道长
打开B的时候,销毁A。B还是singleInstance。在B的onNewIntent中处理bundle的参数,判断是否相同之类的,来决定是否重绘B。
0
LinJZong
LinJZong

引用来自“拉风的道长”的评论

打开B的时候,销毁A。B还是singleInstance。在B的onNewIntent中处理bundle的参数,判断是否相同之类的,来决定是否重绘B。

A和B不能是singleInstance的,因为在嵌套结构中,A和B都是多个的,singleInstance将导致无法返回。

另外销毁A是为了什么?销毁A如何后退?

拉风的道长
拉风的道长
销毁A是为了点击B回到A啊。。 从B回退,就启动A。
0
开源中国隔壁老王
开源中国隔壁老王

为什么不用fragment? 

你在ActivityA中打开fragment(ActvityB) 用hide/show 控制fragment

0
notreami
notreami

fragment,或者一个View直接显示隐藏就行~~

返回顶部
顶部