IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【Android 大厂面试题】阿里一面:Service 启动流程 -> 正文阅读

[移动开发]【Android 大厂面试题】阿里一面:Service 启动流程

面试题一:service 的生命周期,两种启动方式的区别

startService

onCreate() -> onStartCommand() -> onDestroy()

bindService

onCreate() -> onbind() -> onUnbind()-> onDestroy()

两种启动方式的区别:

1. 启动

如果服务已经开启,多次执行 startService 不会重复的执行 onCreate(), 而是会调用 onStart()onStartCommand()

如果服务已经开启,多次执行bindService时,onCreate和onBind方法并不会被多次调用

2. 销毁

当执行 stopService 时,直接调用 onDestroy 方法

调用者调用 unbindService 方法或者调用者 Context 不存在了(如Activity被finish了),Service就会调用 onUnbind->onDestroy

  • 使用 startService() 方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服 务仍然运行。
  • 使用 bindService() 方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止。

单独使用 startService & stopService

  • 第一次调用 startService 会执行 onCreate、onStartCommand。
  • 之后再多次调用 startService 只执行 onStartCommand,不再执行onCreate。
  • 调用 stopService 会执行 onDestroy。

单独使用 bindService & unbindService

  • 第一次调用 bindService 会执行 onCreate、onBind。
  • 之后再多次调用bindService不会再执行 onCreate 和 onBind。
  • 调用 unbindService 会执行 onUnbind、onDestroy。
面试题二:Service 启动流程

  1. Process A 进程采用 Binder IPC 向 system_server 进程发起 startService 请求;
  2. system_server 进程接收到请求后,向 zygote 进程发送创建进程的请求;
  3. zygote进程fork 出新的子进程 Remote Service 进程;
  4. Remote Service 进程,通过Binder IPC向sytem_server 进程发起 attachApplication 请求;
  5. system_server 进程在收到请求后,进行一系列准备工作后,再通过 binder IPC 向remote Service 进程发送 scheduleCreateService 请求;
  6. Remote Service进程的binder线程在收到请求后,通过handler向主线程发送 CR
    EATE_SERVICE消息;
  7. 主线程在收到Message后,通过发射机制创建目标Service,并回调Service.onCreate()方法。

到此,服务便正式启动完成。当创建的是本地服务或者服务所属进程已创建时,则无需经过上述步骤2、3,直接创建服务即可。

bindService:

startService

微信扫描下方 CSDN官方认证 二维码 免费领取 Android高级开发面试题!

更多Android大厂面试题
  • Activity
  • Service
  • BroadcastReceiver
  • ContentProvider

  • Handler
  • View绘制

  • View事件分发
  • RecycleView
  • Viewpager&Fragment
  • WebView
  • 动画
  • Bitmap

  • mvc&mvp&mvvm
  • Binder
  • 内存泄漏&内存溢出
  • 性能优化
  • Window&WindowManager
  • AMS

  • 系统启动
  • App启动&打包&安装
  • 序列化
  • Art & Dalvik 及其区别
  • 模块化&组件化
  • 热修复&插件化
  • AOP
  • jectpack
  • 开源框架


由于篇幅有限,这份Android高级开发面试题及答案解析已经被整理成了PDF文档,有需要完整文档(面试题+答案解析)的可以微信扫描下方CSDN官方认证二维码免费领取!

在这里插入图片描述

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-01-14 02:05:58  更:2022-01-14 02:08:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:47:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码