这些情况下onReume不应该是你的选择
面试Android程序员的时候问过以下几个基本问题,得到的回答经常不尽人意:
1, Activity A跳转到Activity B,Activity B完成后,Activity A要刷新一下自己的数据以保持数据的同步,这种情况在哪个时机调用刷新方法?
回答:在Activity A的onResume中。
2, Activity A被申明为SingleTask,每次跳转到Activity A的时候,Activity A都要刷新一下数据,但因为SingleTask所以onCreate未必执行,那么应该还在哪个时机调用刷新方法?
回答:在Activity A的onResume中。
3, Activity A展示的时候生成了很多现场数据,用户因为别的事情点击Home使得当前的Activity A切到后台,之后再次点击应用进入Activity A的时候,现场数据都丢了,这个是因为系统资源不足而回收了处于栈低的Activity A,再次打开Activity A 的时候系统自动创建了被其回收的Activity A,但是现场数据系统并没有保存,那么应该在哪个时机保存这些数据?
回答:在Activity A的onPause中。
很多程序员在遇见上述情况的时候直接偷懒放到onResume/onPause中。问题来了:
1, 调用过多。很多时候并不是上述描述的场景,但依然刷新了数据或者保存了数据,做得太多,浪费用户流量,消耗应用性能;
2, 代码被整乱。会滋生很多bug出来。
这样的代码不追求精致和极致,急功近利,只求目标,不看结构。好的代码要刚好满足需求场景、不多做也不少做,丁是丁卯是卯。
上述场景的正确答案分别是:
1的场景下应该用startActivityForResult/setResult/onActivityResult这些方法来配合使用;
2的场景下应该用onNewIntent方法;
3的场景下应该用onSaveInstance方法。
这些情况下onReume不应该是你的选择的更多相关文章
- 什么情况下适合用UDP协议,什么情况下适合用TCP协议?
总的来说 TCP协议提供可靠的服务, UDP协议提供高效率的服务. 高可靠性的TCP服务提供面向连接的服务,主要用于一次传输大量报文的情形, 如文件传输,远程登录等: 高效率的UDP协议提供无连接的数 ...
- SQL Server 在缺少文件组的情况下如何还原数据库
SQL Server 在缺少文件组的情况下如何还原数据库 一.背景 我有一个A库,由于a,b两张表的数据量比较大,所以对表进行分区:在把A库迁移到一个新的集群上去,我只备份了A库的主分区过去进行还原为 ...
- 如何在删除ibdata1和ib_logfile的情况下恢复MySQL数据库
昨天,有个朋友对公司内部使用的一个MySQL实例开启binlog,但是在启动的过程中失败了(他也没提,为何会失败),在启动失败后,他删除了ibdata1和ib_logfile,后来,能正常启动了,但所 ...
- 排版紧凑情况下IOS 浏览器的文字部分选中问题
一.需求 一个每一项都是图文混排的列表页,在需要对其中的某一部分文字进行选中copy的时候,IOS个二货每次都是直接选中了整个列表项,无论怎么操作它的选框都没有办法做到部分选中. 这是我本周遇到遇到的 ...
- 如何在Windows Server 2008 R2没有磁盘清理工具的情况下使用系统提供的磁盘清理工具
今天,刚好碰到服务器C盘空间满的情况,首先处理了临时文件和有关的日志文件后空间还是不够用,我知道清理C盘的方法有很多,但今天只分享一下如何在Windows Server 2008 R2没有磁盘清理工具 ...
- 用SignalR 2.0开发客服系统[系列4:负载均衡的情况下使用SignalR]
前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 用SignalR 2.0开发客服系统 ...
- 在不损坏C盘的情况下为C盘扩容,适用于Win
2016年12月29日14:29:27 参考原文:http://jingyan.baidu.com/article/90808022a6c6b7fd91c80fc8.html 在不损坏磁盘的情况下给某 ...
- PHP通过加锁实现并发情况下抢码实现
需求:抢码功能 要求: 1.特定时间段才开放抢码: 2.每个时间段放开的码是有限的: 3.每个码不允许重复: 实现: 1.在不考虑并发的情况下实现: function get_code($len){ ...
- C++:一般情况下,设计函数的形参只需要两种形式
C++:一般情况下,设计函数的形参只需要两种形式.一,是引用形参,例如 void function (int &p_para):二,是常量引用形参,例如 void function(const ...
随机推荐
- oc必须知道的知识点
id数据类型 1.通用的指针类型 2.没有*号 3.使用id类型时,不能给对象的属性或成员变量进行赋值 4.可以对其发送任何(存在的)消息 import与@class的区别 1.import会包含 ...
- js操作DOM动态添加和移除事件
非IE下,注意事件名不带on,如onclick为click 添加事件:DOM对象.addEventListener('事件名',函数名,true/false); 删除事件:DOM对象.removeEv ...
- js控制全屏窗口
<script src="__PUBLIC__/Js/jquery.min.js"></script> <script type="text ...
- 路径 dirname(__FILE__)
require(dirname(__FILE__).'/include/init.php');
- mysql优化--触发器和auto_increment
1.触发器: 触发器的好处:做数据回收站或者做数据关联删除 触发器的坏处:给数据库增加压力,增删改变慢,不利与mysql移到其他数据库会出问题. 触发器建立:只能增删改,查不能建立. 例子1:创建一个 ...
- margin-bottom在IE6和IE7下失效的解决办法
IE6/7下margin-bottom无效一般出现在容器里某元素设置后在父容器内无效,这个时候只需要在父容器中加入以下两句css,基本上所有的浏览器都兼容了: overflow:hidden;zoom ...
- iOS-设置UIPageControl 显示图片
UIPageControl 的默认样式是几个小圆点,系统没有提供属性供我们自定义这几个小圆点的样式,不过我们依然可以使用KVC来自定义PageControl的显示样式 UIPageControl *p ...
- UCMA设置lync在线状态
摘要 UCMA全称Microsoft Unified Communications Managed API,主要用来构建工作在Microsoft Lync Server上的中间层应用程序.开发人员可以 ...
- Linux服务器管理: 日志管理(二)
日志的轮替 1.日志文件的命名规则 a.如果配置文件中拥有"dateext"参数,那么日志会用日期来作为日志文件的后缀,例如:"secure-20150630" ...
- UTF-8-BOM
https://www.zhihu.com/question/20167122 知乎 「带 BOM 的 UTF-8」和「无 BOM 的 UTF-8」有什么区别?网页代码一般使用哪个? http://b ...