Q:谈谈onSaveInstanceState()方法?何时会调用?
当Activity意外销毁时再重新创建时会调用此方法,比如横竖屏切换,会导致重新创建Activity,onSaveInstanceState()方法的调用在onStop()之前,用于保存当前Activity的状态,当Activity被重新创建后,会调用onRestoreInstanceState()来恢复Activity的状态,onRestoreInstanceState()的调用在onStart()之前。
Q:onSaveInstanceState()与onPause()的区别?
两者执行没有固定的先后顺序。
onsavedinstance(Bundle savedinstancestate)方法的触发时机,其典型的情景是按home键或者切换activity,这样的activity可能被销毁的场合,但是按back键退出程序,则不会调用此方法,适合保存一些非持久性的数据(即程序运行期间需要储存的数据)。
而onpause(),不管是可能销毁还是退出程序,都必须调用,适合保存持久性的数据,但是android本身没有为此方法提供bundle参数,因此我们可以选用做一个静态变量或者是提供一个sharedpreference作为数据载体。
Q:如何避免配置改变时Activity重建?
在清单文件下每个activity注册时写上
android:configChanges=“XXX”
比如横竖屏切换:android:configChanges=“orientation”
Q:优先级低的Activity在内存不足被回收后怎样做可以恢复到销毁前状态?
1.当app处于后台被系统回收时,app的进程被杀死了,Activity 也被回收了,而app的task和activity栈以及相应的intent和数据会被系统保存起来。当app被切回前台时,系统会恢复task和activity栈以及相应的intent和数据。
2.不要在Application类和全局单例类中存放数据,会导致app无法正确恢复状态。运行时的临时数据应存放在SharedPreference、临时文件或数据库中
3 Activity之间传数据应该用系统提供的intent机制。
Q:说下Activity的四种启动模式?(有时会出个实际问题来分析返回栈中Activity的情况)https://blog.csdn.net/augfun/article/details/54897871
Q:谈谈singleTop和singleTask的区别以及应用场景
栈顶复用:解决重复打开Activity的问题。
栈内复用:当一个任务栈要调用另一个程序的Activity的时候,如下:
Q:onNewIntent()调用时机?
当进行singleTop和singleTask模式的时候,存在对应的Activity,即会调用该Activity的onNewIntent()。
Q:了解哪些Activity启动模式的标记位?
Intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//指定singleTask模式,与在AndroidManifest.xml中指定android:launchMode"singleTask"效果相同
Intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
//指定singleTop模式,与在AndroidManifest.xml中指定android:launchMode"singleTop"效果相同
Intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//具有这个标志的Activity启动时,在同一个任务栈中所以位于它上面的Activity都要出栈,一般会和singleTask模式一起出现
Intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
//具有这个标志的Activity不会出现在历史的Activity列表中,它等同于在AndroidManifest.xml中指定android:excludeFromRecents=“true”
标记位优先级比在AndroidManifest中指定优先级高
Q:如何启动其他应用的Activity?
SingleTask和taskAfiinity配合使用
Q:Activity的启动过程?
https://blog.csdn.net/augfun/article/details/82312536
Fragment
========
Q:谈一谈Fragment的生命周期?
下图很好的描述了 Fragment 与 Activity 生命周期的关系
Q:Activity和Fragment的异同?
1、从最基础的开始说—>生命周期
Activity有7个生命周期:onCreate(); onStart(); onResume(); onPause(); onStop(); onDestroy(); onRestart();
Fragment有11个生命周期:onAttach(); onCreate(); onCreateView(); onActivityCreate(); onStart(); onResume(); onPause(); onStop(); onDestroyView(); onDestroy(); onDetach();
所以Fragment比较与Activity来说会更加灵活,因为生命周期多了,你可以控制的地方也就多了。
2、从灵活性上来说
Activity是四大组件之一,是每个页面的承载,一个就是一个,Fragment的显示要依赖于Activity,从Fragment的生命周期中就可以了解到。
Fragment是一个一个的小碎片
1)相比较与Activity来说更加灵活,可以在XML文件中直接进行写入,也可以在Activity中动态添加;
2)可以使用show()/hide()或者replace()随时对Fragment进行切换,并且切换的时候不会出现明显的效果,用户体验会好;Activity虽然也可以进行切换,但是Activity之间切换会有明显的翻页或者其他的效果,在小部分内容的切换上给用户的感觉不是很好
Q:Activity和Fragment的关系?
Fragment的显示要依赖于Activity,从Fragment的生命周期中就可以了解到。
Q:何时会考虑使用Fragment?
类似微信下方菜单栏,以及手机和平板适配等
Service
=======
Q:谈一谈Service的生命周期?
https://www.cnblogs.com/huihuizhang/p/7623760.html
Q:Service的两种启动方式?区别在哪?
start是直接启动,bind是与当前activity绑定。
Q:一个Activty先start一个Service后,再bind时会回调什么方法?此时如何做才能回调Service的destory()方法?
如果一个Service又被启动又被绑定,则该Service将会一直在后台运行。并且不管如何调用,onCreate始终只会调用一次,对应startService调用多少次,Service的onStart便会调用多少次。调用unbindService将不会停止Service,而必须调用 stopService 或 Service的 stopSelf 来停止服务。
最后
这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
相信它会给大家带来很多收获:
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
- 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!!
- 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。
当我们在抱怨环境,抱怨怀才不遇的时候,没有别的原因,一定是你做的还不够好!
加入社区》https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0
自己的职业方向,才能在工作和能力提升中甩开同龄人。
- 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!!
- 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。
当我们在抱怨环境,抱怨怀才不遇的时候,没有别的原因,一定是你做的还不够好!
加入社区》https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0