Android面试题库 - Service(一) - 基础
Service应用场景、与Thread的区别
Service是什么
Service是一个一种在后台长时间执行操作而有没有用户界面的应用组件。
Service与Thread的区别
- Thread
- 最小的运行单元,可以用来执行耗时操作
- Service
- 运行在主线程,不能做耗时操作
- ANR 时间20s
Service的两种启动方式
两种启动方式说明
- 启动 当应用组件(如 Activity)通过调用 startService() 启动服务时,服务即处于“启动”状态。一旦启动,服务即可在后台无限期运行,即使启动服务的组件已被销毁也不受影响。 已启动的服务通常是执行单一操作,而且不会将结果返回给调用方。例如,它可能通过网络下载或上传文件。 操作完成后,服务会自行停止运行。
- 绑定 当应用组件通过调用 bindService() 绑定到服务时,服务即处于“绑定”状态。绑定服务提供了一个客户端-服务器接口,允许组件与服务进行交互、发送请求、获取结果,甚至是利用进程间通信 (IPC) 跨进程执行这些操作。 仅当与另一个应用组件绑定时,绑定服务才会运行。 多个组件可以同时绑定到该服务,但全部取消绑定后,该服务即会被销毁。虽然本文档是分开概括讨论这两种服务,但是您的服务可以同时以这两种方式运行,也就是说,它既可以是启动服务(以无限期运行),也允许绑定。问题只是在于您是否实现了一组回调方法:onStartCommand()(允许组件启动服务)和 onBind()(允许绑定服务)。
两种启动方式的生命周期走向
startService生命周期走向:
- onCreate
- onStartCommand
- onStop
- onDestory
bindService生命周期走向:
- onCreate
- onBind
- unBindService
- onUnBind
- onDestory
服务保活
无法保证,只能尽量保活
- Manifest中设置级别(优先级),process
- 提升为前台服务
- 监听系统广播进行唤醒
- 监听其他APP的广播
- 将 Service 设置为 START_STICKY,利用系统机制在 Service 挂掉后自动拉活(5次)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android 冷兵器 之 tools
前言 Android开发在所难免的就是UI的预览和调整,一般情况下都是直接run看效果,或者是使用AS的preview预览,但这同样带来个小问题,就是你的测试内容会跟随着代码被打包到apk中,如果没做容错的处理很有可能将测试内容展示给用户。 还有就是像一些列表是不支持预览效果的,比如ListView。 其实Android老早就有tools命名空间,作为一个开发快到一年的我,最近看到一篇文章才发现这个tools大用处,在此做个笔记。 直接看一下效果,最为清楚: XML中的代码区区几行,但是右侧的preview效果却很直接,还有就是这些数据并不会打到apk中,直接运行是没有任何效果的,这就是厉害之处!相关代码已提交到Github上: https://github.com/xiaweizi/AndroidToolsExample Android Tools 初步使用 既然是命名空间,那肯定就要在XML开头就要声明。 xmlns:tools="http://schemas.android.com/tools" 类似于 xmlns:android="http://schemas.android....
- 下一篇
我要做 Android 之Fragment
Q:谈一谈Fragment的生命周期? 一:首先说说时间节点:Fragment 是在 Android3.0+ 以后,Android 新增了 Fragments,在没有 Fragment 之前。一个屏幕只能放一个 Activity。这是一个起源时间大家什么时候引入。(ps:为了屏幕适配的原因翻译为碎片) Fragment 概要 学习 Fragment 的时候可以联系之前学习过的 Activity ,因为它们有很多相似点:都可包含布局,有自己的生命周期,Fragment 可看似迷你活动。正如 Fragment 的名字--碎片,它的出现是为了解决 Android 碎片化 ,它可作为Activity 界面的组成部分,可在 Activity 运行中实现动态地加入、移除和交换。一个 Activity 中可同时出现多个Fragment,一个 Fragment 也可在多个 Activity 中使用。 Activity 代表了一个屏幕的主体,而 Fragment 可以作为 Activity 的一个组成元素。 一个 Activity 可以有若干个(0或n)Fragment 构成。你可以把 Fragment...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS6,CentOS7官方镜像安装Oracle11G
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19