开发者社区> 问答> 正文

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

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

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

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

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

展开
收起
kun坤 2020-06-06 16:25:25 530 0
1 条回答
写回答
取消 提交回答
  • fragment######我也遇到了同样的问题,请问你现在找到解决方案了吗######打开B的时候,销毁A。B还是singleInstance。在B的onNewIntent中处理bundle的参数,判断是否相同之类的,来决定是否重绘B。######

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

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

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

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

    ######销毁A是为了点击B回到A啊。。 从B回退,就启动A。######

    为什么不用fragment? 

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

    ######

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

    2020-06-06 16:25:30
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载