最近看了任医生的《Android艺术开发探索》感觉收获颇丰。所以也想记录一下博客,因为写博客觉的确实是积累和总结的过程。好了,废话不多说了。

service总共分为2种,一种是普通service,就是直接继承Service的类,比较简单。主要注意的是这个类运行在主线程的,不能做耗时的工作。如果需要做耗时的工作就需要另外开启i一个线程了。

根据官方文档对service的基础方法的解释:

onStartCommand():当其他的组件调用startService()方法的时候,这个方法会调用一次,并在后台运行。如果你实现了找个方法,你有必要在这个方法完成之后调用stopSelf或者stopService(如果你仅仅想获取binding可以不必实现这个方法)。这个也是基础service进行工作的方法,把你要实现的功能写在这里。有一点要注意,当你是通过bindService开启服务的时候,这个方法是不会被调用的

onStartCommand回调方法还有一个返回值,返回值系统总共给了3个:

1、START_NOT_STICKY 这个值文档上说是系统不会轻易在你工作未完成前杀死这个服务。是一个相对安全的值。系统不会重新创建这个服务

2、START_STICKY 当我们返回这个值的时候,会重新创建这个服务,不过不会再传递intent对象了。这个比较适合多媒体播放

onBind():当其他组件想要与这个service绑定的话(例如实现远程协议调用RPC),在这个方法实现里你必须提供IBinder接口来和客户端通信。 要实现跨进程通信必须要实现的方法

onCreate():当这个服务第一次创建的时候系统回调,可以在这里做一些初始化工作

onDestroy():当服务被销毁的时候,系统回调,做一些释放内存的操作

还有一种也可以实现Service的功能,就是IntentService,这个和上面的不同之处在于,这个我们要在onHandleIntent.方法里进行操作。而且这个回调是可以进行耗时操作的。

下面说说启动服务,启动服务主要两种方式,第一种是startService,当我们启动一个实现了onStartCommand服务之后,onCreate之后调用一次,并且再次启动不会调用该方法。

转载于:https://blog.51cto.com/wangjinxue/1714734

android aidl和普通service相关推荐

  1. Android之四大组件(Service的开启与关闭)

    个人开发的微信小程序,目前功能是书籍推荐,后续会完善一些新功能,希望大家多多支持! 前言 服务(Service)是Android系统中的四大组件之一.服务主要用于两个目的:后台运行和跨进程访问.通过启 ...

  2. [转]Android中程序与Service交互的方式——交互方式

    本文转自:http://blog.csdn.net/yihongyuelan/article/details/7216188 上一篇文章:Android中程序与Service交互的方式--综述 简述了 ...

  3. Android AIDL的实现

    2019独角兽企业重金招聘Python工程师标准>>> AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在A ...

  4. Android AIDL使用介绍(3) 浅说AIDL背后的Binder

    1.背景 在前面的博客中,我们已经学会了使用AIDL进行跨进程通信,AIDL的使用比较简单,可实际上跨进程通信是一个相当复杂的过程,例如进程A是怎么找到进程B的,如果有一个进程C冒充进程A,进程B又该 ...

  5. Android AIDL使用介绍(2)自定义数据类型的传递

    1.背景 默认情况下,AIDL只支持下列数据类型: Java八种基础数据类型(如 int.long.char.boolean 等); String字符串: CharSequence字符序列: List ...

  6. Android AIDL使用介绍(1)基本使用

    1.什么是AIDL AIDL全称是Android Interface Definition Language,中文译为Android接口定义语言,AIDL的提出是为了解决进程间通讯,我们知道,在And ...

  7. android java service_[Java教程]Android四大组件之Service浅见

    [Java教程]Android四大组件之Service浅见 0 2014-04-04 18:00:28 Service 是Android四大组件之一,可以在不显示界面的情况下在后台运行.还有一个作用是 ...

  8. Android AIDL使用详解

    一.概述 AIDL 意思即 Android Interface Definition Language,翻译过来就是Android接口定义语言,是用于定义服务器和客户端通信接口的一种描述语言,可以拿来 ...

  9. ANDROID AIDL 1

    也可参考:http://buaadallas.blog.51cto.com/399160/372090 的Android AIDL(Android Interface Definition Langu ...

最新文章

  1. 高效并发处理之libevent
  2. 计算机实践报告800字,计算机软件专业大学生社会实践报告800字
  3. NET问答: 如何从 string 中挖出所有的 number ?
  4. 数据库基础知识——初始MySQL
  5. 正则表达式简单语法及常用正则表达式
  6. 解决python在pycharm中可以import本地文件,但命令行运行时报错:no model named xxxx本地文件
  7. php注入类,简单实用的PHP防注入类实例_PHP
  8. (转)收集 Spring Boot 相关的学习资料,Spring Cloud点这里 重点推荐:Spring Boot 中文索引...
  9. TFS小记(3):建立团队项目
  10. HTML 编辑器推荐
  11. 载入java VM时windows出现错误:2 的解决方法
  12. Win10如何ping端口是否开放
  13. ie8和ie11的html代码生成,ie8升级ie11-IE11,IE8
  14. Python实现熵权法(正负指标)并计算综合评分—————附增完整代码和测试用例
  15. Excel对比数据差异方法总结
  16. python中英文古风排版_古风排版 - Calculus9 - 博客园
  17. Tera Term (串口工具)永久保存设置的字体和框体大小
  18. 计算机科学家 本科专业,纽芬兰纪念大学计算机科学本科专业介绍及课程设置...
  19. 日本房地产泡沫经验及其借鉴
  20. 天猫精灵--智能家居接入(一)

热门文章

  1. vue-count-to插件使用方法
  2. php和js搜索框,利用PHP+JS实现搜索自动提示(实例)_php技巧
  3. Java中判断一个字符串全为数字和字母
  4. m-qam matlab,基于matlab的M_QAM通信系统仿真.doc
  5. python采集代理ip_Python采集代理ip并判断是否可用和定时更新的方法
  6. shell调用hive客户端导致nohup后台进程stopped
  7. ant部署web工程模板
  8. 布林通道参数用20还是26_布林通道(BOLL)策略的投资效果如何?
  9. Oracle索引扫描方式
  10. mac ---- 安装ftp服务器