Android面试题笔记

Posted fakerXuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android面试题笔记相关的知识,希望对你有一定的参考价值。

Activity笔记

  • Activity的4种状态
    running/ paused/ stopped/ killed
  • Activity生命周期
    在这里插入图片描述
  • Activity生命周期分析
    在这里插入图片描述
  • android进程优先级
    前台>可见>服务>后台>空
  • Activity启动模式
    1. standard 标准模式
    2. singletop 栈顶复用模式
    3. singletask 栈内复用模式
    4. singleinstance 单例 独享一个任务栈
  • scheme跳转协议
    在这里插入图片描述

Fragment笔记

  • Fragment加载到Activity的两种方式
    1. 添加Fragment到Activity的布局文件当中
    2. 动态在Activity中添加Fragment
      在这里插入图片描述
  • FragmentPagerAdapter与FragmentStatePagerAdapter区别
    FragmentStatePagerAdapter调用了detach方法,而FragmentPagerAdapter调用了remove方法,前者比后者更节省内存。前者适合页面较多的情况,后者适合页面较少的情况。
  • Fragment的生命周期 Fragment从启动到销毁的全过程
    在这里插入图片描述
  • Fragment通信
    1. 在Fragment中调用Activity中的方法,通过getActivity
    2. 在Activity中调用Fragment中的方法,接口回调
    3. 在Fragment中调用Fragment中的方法, findFragmentById

Service笔记

  • service是什么?
    Service是一个可以在后台执行长时间运行操作而没有用户界面的应用组件。

  • Service和Thread的区别
    Service运行在主线程,不能做耗时操作,否则会ANR。如果需要在Service中做耗时操作,一定要开启子线程,在子线程中去做。

  • 启动Service

    1. 定义一个类继承Service
    2. 在Manifest.xml文件中配置该Service
    3. 使用Context的startService(Intent)方法启动该Service
    4. 不在使用时,调用stopService(Intent)方法停止该服务
  • bindService

    1. 创建bindService服务端,继承Service并在类中创建一个实现Binder接口的实例对象并提供公告方法给客户端调用
    2. 从onBind()回调方法返回此Binder实例。
    3. 在客户端中,从onServiceConnected90回调方法接收Binder,并使用提供的方法调用绑定服务

Broadcast Receiver

  1. 广播定义
    在Android中Broadcast是一种广泛运用的在应用程序之间传输信息的机制,Android中我们要发送的广播内容是一个Intent,这个Intent中可以携带我们要传送的数据。
  2. 广播的使用场景
    A. 同一个APP具有多个进程的不同组件之间的消息通信
    B. 不同APP之间的组件之间消息通信
  3. 广播种类
    1) Normal Broadcast:Context.sendBroadcast
    2) System Broadcast: Context.sendOrderedBroadcast
    3) Local Broadcast: 只在自身APP内传播
  4. 实现广播-receiver
    1. 静态注册:在Manifest.xml注册,注册完成就一直运行
    2. 动态注册:跟随Activity的生命周期
  5. 内部实现机制
    1. 自定义广播接受者BroadcastReceiver,并复写onReceive()方法
    2. 通过Binder机制向AMS进行注册
    3. 广播发送者通过Binder机制向AMS发送广播
    4. AMS查找符合相应条件(IntentFilter、Permission)的BroadcastReceiver,将广播发送到BroadcastReceiver(一般情况下是Activity)相应的消息循环队列中
    5. 消息循环执行拿到此广播,回调BroadcastReceiver中的onReceive()方法
  6. LocalBroadcastManager详解
    1. 使用它发送的广播将只在自身APP内传播,因此你不必担心泄露隐私数据

    2. 其他APP无法对你的APP发送该广播,因为你的APP根本就不可能接收到非自身应用发送的该广播,因此你不必担心有安全漏洞可以利用

    3. 比系统的全局广播更加高效

    4. LocalBroadcastMananger高效的原因主要是它内部是通过Handler实现的,它的sendBroadcast()方法含义并非和我们平时所用的一样,它的sendBroadcast()方法其实是通过Handler发送一个Message实现的

    5. 既然它内部是通过Handler来实现广播发送的,那么相比于系统广播通过Binder实现那肯定是高校了,同时使用Handler来实现,别的应用无法向我们的应用发送该广播,而我们的应用内发送的广播也不会离开我们的应用

    6. LocalBroadcastManager内部协作主要是靠着两个Map集合:mReceivers和mActions,当然还有一个List集合mPendingBroadcasts,这个集合主要存储待接收的广播对象。

Webview常见的一些坑

在这里插入图片描述
在这里插入图片描述

  • 关于webview内存泄露问题
    在这里插入图片描述

Binder面试笔记

  1. Linux内核的基础知识
    1. 进程隔离/虚拟地址空间
    2. 系统调用
    3. Binder驱动
  2. 为什么使用Binder
    安全、性能
  3. Binder通信模型
    1)通信录:Binder驱动
    2)电话基站:serviceManager
    在这里插入图片描述
    在这里插入图片描述
  • 什么是Binder
    1. 通常意义下,Binder指的是一种通信机制
    2. 对于Server进程来说,Binder指的是Binder本地对象、对于client来说,Binder指的是Binder代理对象
    3. 对于传输过程而言,Binder是可以跨进程传递的对象

以上是关于Android面试题笔记的主要内容,如果未能解决你的问题,请参考以下文章

Android面试题集2021版,Android校招面试指南

Android面试题集

Android面试题笔记

史上最全的2022年最新版Android安卓面试题集锦(含答案+源码)

Android面试题集:以前烂大街的四大组件-Activity,面试重提这些知识点你还记得吗?

Android面试题集:以前烂大街的四大组件-Activity,面试重提这些知识点你还记得吗?