安卓面经_安卓基础面全解析(2/30)Service全解析

牛客高级系列专栏:

安卓(安卓系统开发也要掌握)


嵌入式


本人是2020年毕业于广东工业大学研究生:许乔丹,有国内大厂CVTE和世界500强企业安卓开发经验,该专栏整理本人对常见安卓高频开发面试题的理解;

网上安卓资料千千万,笔者将继续维护专栏,一杯奶茶价格不止提供答案解析,承诺提供专栏内容免费技术答疑,直接咨询即可。助您提高安卓面试准备效率,为您面试保驾护航!

正文开始⬇

Service是Android四大组件之一,其中Service和Activity是面试官最喜欢问的。如果面试官问你:

  1. 请介绍Service的启动方式,启动方式的区别?⭐⭐⭐⭐⭐⭐(满分5分,这道题6分,你懂的~)
  2. 请介绍Service的生命周期?⭐⭐⭐⭐⭐
  3. Activity、Service、intent之间的联系?⭐⭐⭐⭐
  4. 在Activity和Service中创建Thread的区别?(进阶题)⭐⭐⭐
  5. android进程的优先级?以及如何保证Service不被杀死?(进阶题)⭐⭐⭐⭐
  6. 直接在Activity中创建一个thread跟在service中创建一个thread之间的区别?(附加题)⭐⭐

看完以下的解析,一定可以让面试官眼前一亮。

目录

  • 1、什么是Service
  • 2、Service的启动方式
    • 2.1 startService()
    • 2.2 bindService()
    • 2.3 两种启动方式的区别
      • 通过startService启动
      • 通过bindService绑定
      • startService/bindService同时使用
    • 2.4 在什么情况下使用 startService 或 bindService 或 同时使用startService 和 bindService?
  • 3、Service种类和优先级
    • 3.1 Service的种类
    • 3.2 android中进程的优先级
  • 4、说说Activity、Intent、Service 是什么关系?(进阶题)
  • 5、IntentService。(进阶题)
  • 6、直接在Activity中创建一个thread跟在service中创建一个thread之间的区别?(附加题)

1、什么是Service

Service意为“服务”,相对于Activity是一个有可见界面的、为实现交互而提供的Android应用组件,Service则是一个可以在后台长期运行但又不使用用户界面的Android应用组件。它可以和其他的组件形成一定联系,通过传达信息来联系多个组件共同执行某个操作。举个最简单的例子,你此时正在用手机听歌曲,播放歌曲的进程就是一个后台服务。

2、Service的启动方式

对于Service的生命周期,不同的启动方式会有不同的生命周期,所以了解不同的启动方式的同时,也要掌握Service的生命周期图片说明

2.1 startService()

生命周期见上图左时序图。当另一个组件可以通过调用 startService()方法来启动特定的服务,此时Service生命周期中的onStartCommand()方法被调用。当调用startService()方法时,其他组件需要在方法中传递一个intent参数,服务会在onStartCommand()中接收到intent并获取一些数据。比如ActivityA需要上报一些用户数据到服务器上面,就可以通过startService()来启动ServiceA,并将需要上报的数据传递给ServiceA,在ServiceA里面调用一些网络接口,把数据直接上报到服务器上面。

当一个服务以这种方式启动时,它的生命周期不再受启动它的组件的影响,它可以在后台无限期地运行,如上一段的例子里,就算ActvityA挂了,ServiceA仍在后台运行,直到ServiceA自己调用stopSelf()或者其他的组件手动调用stopService(ServiceA)时ServiceA才会停止。

2.2 bindService()

生命周期见上图右侧时序图。从名字上可以看出这个“绑定”一个服务,要创建一个支持绑定的Service,我们必须要重写它的onBind()方法,这个方***返回一个IBinder对象,它是客户端用来和服务器进行交互的接口。如ActivityA绑定ServiceA,此时ActivityA称为客户端,ServiceA称为服务端,ActivityA有从ServiceA返回的一个IBinder对象,通过该对象,ActivityA就可以调用ServiceA里面的方法。

这是一种比startService更复杂的启动方式,同时使用这种方式启动的service也能完成更多的事情,比如其他组件可向其发送请求,接受来自它的响应,甚至通过它来进行IPC等等。

2.3 两种启动方式的区别

下面就这两种启动方式,详细介绍具体的生命周期过程。按我标准,题目满分是5分,这个题目是6分,你懂得~

通过startService启动

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

Android高频面试题全解析 文章被收录于专栏

#提供免费售后答疑!!花一杯奶茶的钱获得安卓面试答疑服务,稳赚不赔# Android发展已经很多年,安卓资料网上千千万,本专栏免费提供专栏内容技术答疑!!私聊当天必回。在阅读过程或者其他安卓学习过程有疑问,都非常欢迎私聊交流。

全部评论
不要在UI线程上做耗时任务
1 回复 分享
发布于 2023-02-13 18:00 广东
3.3 小节更新:如何保证Service不被杀死?
点赞 回复 分享
发布于 2023-02-13 22:11 广东
如何保证Service不被杀死?
点赞 回复 分享
发布于 2023-02-13 21:06 四川
感谢楼主分享,最近就是在看大家的分享,准备节后的面试
点赞 回复 分享
发布于 2022-10-01 16:54 山西

相关推荐

点赞 评论 收藏
分享
评论
4
10
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务