最新Android高级面试知识点--四大组件
Posted 安静的Sunny
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最新Android高级面试知识点--四大组件相关的知识,希望对你有一定的参考价值。
【最新Android高级面试知识点干货分享(四)】
转载请注明出处!
三、Service/IntentService
Service作为四大组件之一,也是面试官喜欢问的。
一般包括:启动方式、生命周期、Binder机制、保活以及唤醒等。
-
启动方式:startService/bindService
-
生命周期:
onCreate--onStartCommand--onDestroy onCreate--onBind--onStart---onUnbind--onDestroy
-
Binder机制:IBinder/Stub/AIDL
属于C/S架构,Service通过onBind方法, 返回给客户端IBinder接口实例。 更详细的见下面的AIDL
由于Service默认支行在主线程(ActivityThread)中,因此当在Service中执行耗时操作时,会阻塞UI线程,导致ANR.为此系统提出了IntentService来在子线程中开启服务,处理耗时操作。
-
IntentService:
原理:是在onCreate()方法里面, 通过HandlerThread来创建线程,开启线程
四、BroadCast/LocalBroadCast
广播知识点:种类、注册方式、使用广播时在应用安全方面注意事项。
广播的种类有:有序广播、无序广播、粘性广播
注册方式:静态注册(androidManifest.xml)、动态注册
BroadCast是系统级别,采用Binder通信机制;
LocalBroadCast本地广播,属应用级别,采用Handler通信机制。
如果没有与第三方通信,则推荐使用LocalBroadCast。
五、ContentProvider
内容提供者,专用于应用 间数据共享。
注意点:
-
ContentObserver
-
ContentResolver:
ContentObserver用于观察ContentProvider中的变化, 而它是通过ContentResolver的 registerContentObserver()与unregisterContentObserver() 来进行注册与注销。 当ContentProvider中有变化时, 就会回调ContentObserver中的onChange()方法
由于Android权限,在Android7.0以上,得用FileProvider(为ContentProvider的子类)
Android 7.0 禁止在应用外部公开 file:// URI,所以我们必须使用 content:// 替代 file://,这时主要需要 FileProvider 的支持,还需要动态申请访问SD卡目录的权限。
1,在AndroidManifest.xml中指定
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="$applicationId.fileprovider"
android:exported="false"
android:grantUriPermission="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths_test"></meta>
</provider>
2,在res下创建xml目录,然后在res/xml/下创建file_path_test的xml文件(主要是指定sdk的路径)
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path path="." name="external_storage_root">
</paths>
(下一篇将整理分享Android自定义View、Android动画)
以上是关于最新Android高级面试知识点--四大组件的主要内容,如果未能解决你的问题,请参考以下文章
Android -- 面试Android 知识点(四大组件)
最新最全《2022Android中高级大厂面试题汇总》1932页面试宝典