Android面试题笔记
Posted fakerXuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android面试题笔记相关的知识,希望对你有一定的参考价值。
Activity笔记
- Activity的4种状态
running/ paused/ stopped/ killed - Activity生命周期
- Activity生命周期分析
- android进程优先级
前台>可见>服务>后台>空 - Activity启动模式
- standard 标准模式
- singletop 栈顶复用模式
- singletask 栈内复用模式
- singleinstance 单例 独享一个任务栈
- scheme跳转协议
Fragment笔记
- Fragment加载到Activity的两种方式
- 添加Fragment到Activity的布局文件当中
- 动态在Activity中添加Fragment
- FragmentPagerAdapter与FragmentStatePagerAdapter区别
FragmentStatePagerAdapter调用了detach方法,而FragmentPagerAdapter调用了remove方法,前者比后者更节省内存。前者适合页面较多的情况,后者适合页面较少的情况。 - Fragment的生命周期 Fragment从启动到销毁的全过程
- Fragment通信
- 在Fragment中调用Activity中的方法,通过getActivity
- 在Activity中调用Fragment中的方法,接口回调
- 在Fragment中调用Fragment中的方法, findFragmentById
Service笔记
-
service是什么?
Service是一个可以在后台执行长时间运行操作而没有用户界面的应用组件。 -
Service和Thread的区别
Service运行在主线程,不能做耗时操作,否则会ANR。如果需要在Service中做耗时操作,一定要开启子线程,在子线程中去做。 -
启动Service
- 定义一个类继承Service
- 在Manifest.xml文件中配置该Service
- 使用Context的startService(Intent)方法启动该Service
- 不在使用时,调用stopService(Intent)方法停止该服务
-
bindService
- 创建bindService服务端,继承Service并在类中创建一个实现Binder接口的实例对象并提供公告方法给客户端调用
- 从onBind()回调方法返回此Binder实例。
- 在客户端中,从onServiceConnected90回调方法接收Binder,并使用提供的方法调用绑定服务
Broadcast Receiver
- 广播定义
在Android中Broadcast是一种广泛运用的在应用程序之间传输信息的机制,Android中我们要发送的广播内容是一个Intent,这个Intent中可以携带我们要传送的数据。 - 广播的使用场景
A. 同一个APP具有多个进程的不同组件之间的消息通信
B. 不同APP之间的组件之间消息通信 - 广播种类
1) Normal Broadcast:Context.sendBroadcast
2) System Broadcast: Context.sendOrderedBroadcast
3) Local Broadcast: 只在自身APP内传播 - 实现广播-receiver
- 静态注册:在Manifest.xml注册,注册完成就一直运行
- 动态注册:跟随Activity的生命周期
- 内部实现机制
- 自定义广播接受者BroadcastReceiver,并复写onReceive()方法
- 通过Binder机制向AMS进行注册
- 广播发送者通过Binder机制向AMS发送广播
- AMS查找符合相应条件(IntentFilter、Permission)的BroadcastReceiver,将广播发送到BroadcastReceiver(一般情况下是Activity)相应的消息循环队列中
- 消息循环执行拿到此广播,回调BroadcastReceiver中的onReceive()方法
- LocalBroadcastManager详解
-
使用它发送的广播将只在自身APP内传播,因此你不必担心泄露隐私数据
-
其他APP无法对你的APP发送该广播,因为你的APP根本就不可能接收到非自身应用发送的该广播,因此你不必担心有安全漏洞可以利用
-
比系统的全局广播更加高效
-
LocalBroadcastMananger高效的原因主要是它内部是通过Handler实现的,它的sendBroadcast()方法含义并非和我们平时所用的一样,它的sendBroadcast()方法其实是通过Handler发送一个Message实现的
-
既然它内部是通过Handler来实现广播发送的,那么相比于系统广播通过Binder实现那肯定是高校了,同时使用Handler来实现,别的应用无法向我们的应用发送该广播,而我们的应用内发送的广播也不会离开我们的应用
-
LocalBroadcastManager内部协作主要是靠着两个Map集合:mReceivers和mActions,当然还有一个List集合mPendingBroadcasts,这个集合主要存储待接收的广播对象。
-
Webview常见的一些坑
- 关于webview内存泄露问题
Binder面试笔记
- Linux内核的基础知识
- 进程隔离/虚拟地址空间
- 系统调用
- Binder驱动
- 为什么使用Binder
安全、性能 - Binder通信模型
1)通信录:Binder驱动
2)电话基站:serviceManager
- 什么是Binder
- 通常意义下,Binder指的是一种通信机制
- 对于Server进程来说,Binder指的是Binder本地对象、对于client来说,Binder指的是Binder代理对象
- 对于传输过程而言,Binder是可以跨进程传递的对象
以上是关于Android面试题笔记的主要内容,如果未能解决你的问题,请参考以下文章
Android面试题集2021版,Android校招面试指南
史上最全的2022年最新版Android安卓面试题集锦(含答案+源码)