大鹏一日同风起,扶摇直上九万里。这篇文章主要讲述Android 开发中Service完全解析相关的知识,希望能为你提供帮助。
-
定义:服务,是android四大组件之一,属于计算型组件
-
作用:提供 需在后台长期运行的服务
-
生命周期:
文章图片
在Service的生命周期里,常用的有:
(1) 4个手动调用的方法
手动调用方法 |
作用 |
startService() |
启动服务 |
stopService() |
关闭服务 |
bindService() |
绑定服务 |
unbindService() |
解绑服务 |
内部自动调用的方法 |
作用 |
onCreat() |
创建服务 |
onStartCommand() |
开始服务 |
onDestroy() |
销毁服务 |
onBind() |
绑定服务 |
onUnbind() |
解绑服务 |
-
注意:必须声明在AndroidManifest.xml文件中。(Android四大组件均需要声明在此配置文件中)
-
使用场景:
(2)仅想与后台服务进行通信,使用bindService;
(3)如果一个Service又被启动又被绑定,则该Service会一直在后台运行,既使用startService,又使用bindService。
首先不管如何调用,onCreate始终只会调用一次。对应startService调用多少次,Service的onStartCommand方法便会调用多少次。Service的终止,需要unbindService和stopService同时调用才行。
不管startService与bindService的调用顺序,如果先调用unbindService,此时服务不会自动终止,再调用stopService之后,服务才会终止;如果先调用stopService,此时服务也不会终止,
而再调用unbindService或者之前调用bindService的Context不存在了(如Activity被finish的时候)之后,服务才会自动停止。
-
对比
文章图片
注:一般会将 Service 和 Thread联合使用,即在Service中再创建一个子线程(工作线程)去处理耗时操作逻辑
(2) Service和IntentService的区别
文章图片
-
实例
推荐阅读
- 记一次springboot项目,maven引发的悲剧(Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServ
- tensorflow API _ 2 (tf.app.flags.FLAGS)
- android -------- Eclipse下的NDK配置环境
- 背单词app测试
- 背单词类APP测试与评估
- 如何更改 Apple ID 国家或地区
- Android智能手机中各种音频场景下的audio data path
- [Android Security]APK自我保护 - 字符串处理
- 「部署日记」Android Studio乱码解决方案