Android 用户数据展示

2017-10-17  本文已影响0人  o_o_72ab

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

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

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

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

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

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

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

由此得出结论:

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

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

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

上一篇下一篇

猜你喜欢

热点阅读