adroid分析---lingbx

来源:互联网 发布:淘宝卖水果物流 编辑:程序博客网 时间:2024/05/21 22:21
从下面讨论内容看,这应该是要解决页面保持数据的问题。

如果是PC端页面,数据从服务端获取然后渲染到HTML DOM中,不用刷新页面,在浏览器中数据也是一直存在的。

但是对于APK嵌入WebView控件的情况,因为Activity的生命周期和手机状态关系密切,情况就变得有点特殊,
因为看不到APK代码,只能从测试结果来分析;目前情况是长时间待机情况下,不同品牌手机存在随机丢失页面数据问题。
对于待机情况,当前Activity处于被覆盖状态,Android系统为了节约系统资源(内存、功耗等)会选择性地回收进入到了onStop()停止状态的Activity,
尽管实际的activity实例已经被销毁,但是Android系统仍然记得这个activity的存在,当解锁后返回到界面的时候,系统会创建出一个新的实例来代替它,
如果要在新实例中恢复数据,需要利用旧实例被销毁时候存下来的数据,Android系统提供了2个方法实现这个功能,即onSaveInstanceState()、onRestoreInstanceState(),
不过这个2个方法对于webview控件应该是不适用的,也就是重新创建的webview数据需要重新加载,这个应该就是造成个人中心等页面数据不能维持的原因。
基于目前测试数据以及可见代码只能分析到此。
如果解决这个问题呢,基于上述分析,对于用户关注的页面,可以使用原生界面的方式实现,借助onSaveInstanceState()、onRestoreInstanceState()来保存和恢复数据。

至于memcache方案会丢失数据的问题,这个不一定是必然发生的,要解决数据丢失可以采能memcache+DB方案,但是个人觉得这应该不是导致此处故障的原因。
另外memcache命中率低,只能说明取不到数据的概率。









原创粉丝点击