前序:
3天前,有幸得到师兄赏识,和他一起去帮一间珠海的本地的IT公司担任面试官,虽说如此,我自己本身就还没毕业,充其量是去见识下世面罢了。当天共面试了13人,这只是上午,下午我闪了。在笔试的部分,我设置了一个比较简单的和常见的 android 页面跳转问题,当然要给其他"大佬"先审核。
问题原型:
现有3个页面,A页面每次初始化都会请求一次网络数据,A总是采用startActivity(Intent),跳转到B,B页面是数据编辑页面,它拥有3个按钮,一个点击总是返回A,一个上传数据,最后一个点击跳转到C页面,C页面负责挑选图片或视频,C页面只允许设置一个按钮。
现需要你在请求网络次数最少的情况下,正确地设置 A->B->C->B->A的跳转逻辑,及其理由。
收到的N种答案(核心如下),理由省略(没记住....):
1,A跳到B,B的使用startActivity()跳至C,C在选择完数据后,点击按钮采用startActivity()附带数据跳回B,B采用startActivity() 跳回A;
这个答案,不用多说,弊端就是A就刚初始化APP的时候就请求了一次网络,在最后的跳转又被初始化了一次,而且,B也在C跳的时候被多初始化一次,这种就是盲目使用 statryActivity,作者开发经验较为缺乏。虽然我也是新手,这个还是知道的。
2,A跳到B,B的使用startActivity()跳至C,C在选择完数据后,点击按钮采用startActivity()附带数据跳回B,B采用finish()跳回A。
死循环模式,这种直接pass 掉。
3,A跳到B,B的使用startActivityForResult()跳至C,C在选择完数据后,点击按钮采用finish()附带数据跳B,B采用finish()回A。
我心中的完美模式。
4,先声明个全局的static boolean变量。A跳到B,B的使用startActivity()跳至C,C在选择完数据后,将此全局布尔置为true,点击按钮采用finish()跳B,B在onResume 判断此布尔,有数据则进行对应的控件操作,否则不操作,回A采用finish()。
这类答案也是可行的,作者对Activity的生命周期比较了解,缺点就是牺牲了空间,不可广用。
.....
结语:
这问题比较基础,需要一定的实战开发经验和对activity 生命周期的了解才能答得更好,上述仅是个人观点。