每一次去面试就是一次对自我知识的总结和审核,如果你想拿到大厂的offer.成功的通过一面二面三面四面,那么我分享的面试学习路线你可以来参考一下(PDF文档版见如下)那么面试中最常问的小知识点不懂的透彻怕是不行了
(顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找)
https://github.com/xiangjiana/Android-MS
更多完整项目下载。未完待续。源码。图文知识后续上传github。
可以点击关于我联系我获取
1 、四大组件是什么
1)Activity: 用户可操作的可视化界面,为用户提供一个完成操作指令的窗口。一个 Activity通常是一个单独的屏幕,Activity通过Intent来进行通信。Android中会维持一个Activity Stack,当一个新 Activity 创建时,它就会放到栈顶,这个 Activity 就处于运行状态。
2)Service: 服务,运行在手机后台,适合执行不需和用户交互且还需长期运行的任务。
3)ContentProvider: 内容提供者,使一个应用程序的指定数据集提供给其他应用程序,其他应用可通过 ContentResolver
类从该内容提供者中获取或存入数据。它提供了一种跨进程数据共享的方式,当数据被修改后,ContentResolver
接口的 notifyChange
函数通知那些注册监控特定 URI
的 ContentObserver
对象。
如 果 ContentProvider
和 调 用 者 在 同 一 进 程 中 , ContentProvider
的 方 法(query/insert/update/delete 等)和调用者在同一线程中;如果ContentProvider
和调用者不在同一进程,ContentProvider
方法会运行在它自身进程的一个 Binder 线程中。
4)Broadcast Receiver: 广播接收者,运用在应用程序间传输信息,可以使用广播接收器来让应用对一个外部事件做出响应。
2、四大组件的生命周期和简单用法
1)Activity: onCreate()
->onStart()
->onResume()
->onPause()
->onStop()
->onDestory()
onCreate()
:为 Activity 设置布局,此时界面还不可见;
onStart()
: Activity 可见但还不能与用户交互,不能获得焦点
onRestart()
: 重新启动 Activity 时被回调
onResume()
: Activity 可见且可与用户进行交互
onPause()
: 当前 Activity 暂停,不可与用户交互,但还可见。在新 Activity 启动前被系统调用保存现有的 Activity 中的持久数据、停止动画等。
onStop()
: 当 Activity 被新的 Activity 覆盖不可见时被系统调用
onDestory()
: 当 Activity 被系统销毁杀掉或是由于内存不足时调用
2)Service
a) onBind 方式绑定的: onCreate
->onBind
->onUnBind
->onDestory
(不管调用 bindService
几次,onCreate
只会调用一次,onStart
不会被调用,建立连接后,service 会一直运行,直到调用unBindService
或是之前调用的 bindService
的 Context 不存在了,系统会自动停止 Service,对应的 onDestory
会被调用)
b) startService 启动的: onCreate
->onStartCommand
->onDestory
(start 多次,onCreate
只会被调用一次,onStart
会调用多次,该service会在后台运行,直至被调用stopService
或是stopSelf
)
c) 又被启动又被绑定的服务,不管如何调用 onCreate()
只被调用一次,startService
调用多少次,onStart
就会被调用多少次,而 unbindService
不会停止服务,必须调用 stopService
或是stopSelf
来停止服务。必须unbindService
和 stopService(stopSelf)
同时都调用了才会停止服务。
3)BroadcastReceiver
a) 动态注册: 存活周期是在 Context.registerReceiver
和Context.unregisterReceiver
之间,BroadcastReceiver
每次收到广播都是使用注册传入的对象处理的。
b) 静态注册: 进程在的情况下,receiver 会正常收到广播,调用 onReceive
方法;生命周期只存活在 onReceive
函数中,此方法结束BroadcastReceiver
就销毁了。onReceive()
只有十几秒存活时间,在 onReceive()
内操作超过 10S,就会报 ANR
。
进程不存在的情况,广播相应的进程会被拉活,Application.onCreate
会被调用