Android 用户数据展示

用户数据显示,即: 把头像,昵称,性别等用户信息显示在页面上。 这里涉及到一个数据更新的问题,当用户数据更新时,应当如何处理?

最简单的方式: 在onStart中进行数据的读取、显示。强无敌。缺点是无论用户数据是否真的更新了,都会读取一遍数据。

标记: 使用单例存储真实用户数据,而activity中拷贝单例 得到新数据对象 保存为成员变量 并显示其数据,在onStart中判断两者是否不同而重新显示数据。时间流程即: activity创建→拷贝数据对象并显示→activity切换、数据单例改变→回到activity→onStart中发现数据改变,重新显示数据。

监听: 为数据更新方法添加监听,当数据更新时回调监听列表,这样注册了监听的activity会在数据更新时重设显示的数据。联系使用weak引用以防泄露内存。

当使用监听方案时有个奇怪的现象,打上断点后我发现监听列表中,已关闭的activity仍然存在,吓得我以为内存泄露了,可是确实找不到泄露的原因。于是我新建一个项目测试activity的回收机制。

我先让activity持有巨量内存,通过切换屏幕方向来让系统回收activity,结果打开时还没事,一横屏程序就因内存溢出挂了。

于是我减少了activity的内存持有量,横屏竖屏了n次都没挂,放置activity的虚引用列表中有n多个因旋转被销毁的activity。

由此得出结论:

1 只有在内存不足时,系统才会走垃圾回收

2 那些被销毁的activity被销毁时并不会立刻被回收,而是等待GC一起回收。

3 因内存不足回收activity指的是其它应用占用太多内存,一个程序占太多内存是会因超过限制而崩溃的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,925评论 25 709
  • 1.什么是Activity?问的不太多,说点有深度的 四大组件之一,一般的,一个用户交互界面对应一个activit...
    JoonyLee阅读 5,778评论 2 51
  • 哎呀呀 ,马上就要面临找工作了,媛媛心里紧张呀. 作为一个即将毕业的Android程序媛,开始面临找工作了,...
    左神话阅读 4,935评论 7 59
  • 三个问题:什么人是最重要的人、什么时是应该做事的时候、什么事最重要 愿望,内心最真实的想法!
    难得清明阅读 200评论 0 0
  • 未来6个月,我需要达成的目标有如下几个 1、备战结构工程师考试 这个考试是我的心头大患,难,面对浩如汪洋的题海,恐...
    酒慰风雨夕阅读 1,023评论 0 0