美文网首页
Android 用户数据展示

Android 用户数据展示

作者: o_o_72ab | 来源:发表于2017-10-17 18:31 被阅读0次

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

    最简单的方式: 在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 用户数据展示

          本文链接:https://www.haomeiwen.com/subject/crhduxtx.html