导语
思来想去,还是觉得有必要把自己这一路的经历写出来给小伙伴分享分享,也感谢身边人对自己这一路来的帮助。
首先自我介绍一下,本人非科班非211渣本,电子科学与技术专业,电子、光通信方向,真是偏的不能再偏了。从七月初到九月底,秋招历时三个月。最后拿到了腾讯Android开发岗位和阿里移动软件工程师offer,快手Android开发岗位,也还算幸运。
谨以此文记录我的校招经历与感悟。同时祝还在一线奋战的各位都能尽快找到自己满意的工作!
1、四大组件是什么?
- Activity【活动】:用于表现功能。
- Service【服务】:后台运行服务,不提供界面呈现。
- BroadcastReceiver【广播接收器】:用来接收广播。
- Content Provider【内容提供商】:支持在多个应用中存储和读取数据,相当于数据库。
2、四个组件的生命周期?
Activity生命周期图及?Fragment生命周期图? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
Service的生命周期:首先Service有两种启动方式,而在这两种启动方式下,它的生命周期不同。
通过startService()方法启动的服务
??????初始化结束后系统会调用 void onStart(Intent intent)?方法,用于处理传递给startService()的Intent对象。如音乐服务会打开Intent 来探明将要播放哪首音乐,并开始播放。注意:多次调用startService()方法会多次触发onStart()方法。
通过bindService ()方法启动的服务
??????初始化结束后系统会调用 IBinder onBind(Intent intent)?方法,用来绑定传递给bindService 的Intent 的对象。注意:多次调用bindService()时,如果该服务已启动则不会再触发此方法。
3
、Activity的四种启动模式对比?
- Standard:标准的启动模式,如果需要启动一个activity就会创建该activity的实例。也是activity的默认启动模式。
- SingeTop:如果启动的activity已经位于栈顶,那么就不会重新创建一个新的activity实例。而是复用位于栈顶的activity实例对象。如果不位于栈顶仍旧会重新创建activity的实例对象。
- SingleTask:设置了singleTask启动模式的activity在启动时,如果位于activity栈中,就会复用该activity,这样的话,在该实例之上的所有activity都依次进行出栈操作,即执行对应的onDestroy()方法,直到当前要启动的activity位于栈顶。一般应用在网页的图集,一键退出当前的应用程序。
- singleInstance:如果使用singleInstance启动模式的activity在启动的时候会复用已经存在的activity实例。不管这个activity的实例是位于哪一个应用当中,都会共享已经启动的activity的实例对象。使用了singlestance的启动模式的activity会单独的开启一个共享栈,这个栈中只存在当前的activity实例对象。
4、Activity在有Dialog时按Home键的生命周期?
当我们的Activity上弹出Dialog对话框时,程序的生命周期依然是onCreate() ---> onStart() ---> onResume(),在弹出Dialog的时候并没有onPause()和onStop()方法。而在此时我们按下Home键,才会继续执行onPause()和onStop()方法。这说明对话框并没有使Activity进入后台,而是在点击了Home键后Activity才进入后台工作。
原因就是,其实Dialog是Activity的一个组件,此时Activity并不是不可见,而是被Dialog组件覆盖了其他的组件,此时我们无法对其他组件进行操作而已。
5、两个Activity 之间跳转时必然会执行的是哪几个方法??
首先定义两个Activity,分别为A和B。
当我们在A中激活B时,A调用onPause()方法,此时B出现在屏幕时,B调用onCreate()、onStart()、onResume()。
这个时候B【B不是一个透明的窗体或对话框的形式】已经覆盖了A的窗体,A会调用onStop()方法。
如果你进阶的路上缺乏方向,可以加入我们的圈子和安卓开发者们一起学习交流!
-
Android进阶学习全套手册
-
Android对标阿里P7学习视频
-
BATJ大厂Android高频面试题
最后,借用我最喜欢的乔布斯语录,作为本文的结尾:
人这一辈子没法做太多的事情,所以每一件都要做得精彩绝伦。
你的时间有限,所以不要为别人而活。不要被教条所限,不要活在别人的观念里。不要让别人的意见左右自己内心的声音。
最重要的是,勇敢的去追随自己的心灵和直觉,只有自己的心灵和直觉才知道你自己的真实想法,其他一切都是次要。