前言
好久不见,甚是想念。各位朋友们,我又携带着最受大家欢迎的面试题回来了,可能会有朋友要问了:哎呀,你咋不更了,这不是上次那一份资料用完了嘛,这不,我又厚着脸皮去问我们公司的主管:Boss,给我份面试题呗。Boss瞥了我一眼,冷笑了一下就不做声了,最终在我答应带他上白银,他才拿了这份资料给我٩(๑❛ᴗ❛๑)۶老规矩:一天20题,喜欢的朋友点个关注就不会错过我的更新了,关注我,带你装*,带你飞。
1.Android系统的架构
应用程序
Android会同一系列核心应用程序包一起发布,该应用程序包包括Email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。
应用程序框架
开发人员可以完全访问核心应用程序所使用的API框架(android.jar)。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块。
系统运行库
Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android 应用程序框架为开发者提供服务。
Linux 内核
Android的核心系统服务依赖于 Linux 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。
2.Activity的生命周期
Activity生命周期方法
主要有onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()
和onRestart()
等7个方法。
-
启动一个A Activity,
分别执行onCreate()、onStart()、onResume()
方法。 -
从
A Activity
打开B Activity
分别执行A onPause()、B onCreate()、B onStart()、B onResume()、A onStop()
方法。 -
关闭
B Activity
分别执行B onPause()、A onRestart()、A onStart()、A onResume()、B onStop()、B onDestroy()
方法。 -
横竖屏切换
A Activity
清单文件中不设置android:configChanges
属性时,先销毁onPause()、onStop()、onDestroy()
再重新创建onCreate()、onStart()、onResume()
方法,
设置orientation|screenSize
(一定要同时出现)属性值时,不走生命周期方法,只会执行onConfigurationChanged()
方法。 -
Activity之间的切换
可以看出onPause()、onStop()
这两个方法比较特殊,切换的时候onPause()
方法不要加入太多耗时操作否则会影响体验。
3.Fragment的生命周期
Fragment的生命周期
Fragment与Activity生命周期对比
Fragment的生命周期方法
主要有onAttach()、onCreate()、onCreateView()、onActivityCreated()、onstart()、onResume()、onPause()、onStop()、onDestroyView()、onDestroy()、onDetach()
等11个方法。
-
切换到该Fragment
分别执行onAttach()、onCreate()、onCreateView()、onActivityCreated()、onstart()、onResume()
方法。 -
锁屏
分别执行onPause()、onStop()
方法。 -
亮屏
分别执行onstart()、onResume()
方法。 -
覆盖切换到其他Fragment
分别执行onPause()、onStop()、onDestroyView()
方法。 -
从其他Fragment回到之前Fragment
分别执行onCreateView()、onActivityCreated()、onstart()、onResume()
方法
4.Service生命周期
在Service
的生命周期里,常用的有:
4个手动调用的方法
startService() 启动服务
stopService() 关闭服务
bindService() 绑定服务
unbindService() 解绑服务
5个内部自动调用的方法
onCreat() 创建服务
onStartCommand() 开始服务
onDestroy() 销毁服务
onBind() 绑定服务
onUnbind() 解绑服务
- 手动调用
startService()
启动服务,自动调用内部方法:onCreate()、onStartCommand()
,如果一个Service被startService()
多次启动,那么onCreate()
也只会调用一次。 - 手动调用