最近看了任医生的《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之后调用一次,并且再次启动不会调用该方法。






更多相关文章

  1. Android(安卓)Native 内存泄漏系统化解决方案
  2. Anroid ListView分组和悬浮Header实现
  3. 关于Android(安卓)draw中的画布的说明
  4. 自定义View 篇一--------《自定义View流程分析》
  5. 如何查看Android设备中的启动服务
  6. Android中保存图片的两种方式
  7. 在mac上无法使用Android(安卓)Studio的解决方法
  8. Android(安卓)React Native组件的生命周期
  9. Android10 insmod源码分析

随机推荐

  1. 【Android开发基础】应用界面主题Theme使
  2. eclipse 遭遇及解决 debug调试时 因Andro
  3. Android面试题(五) --重要
  4. Android中Activity启动模式详解
  5. android selector
  6. Android必备:Android项目的目录结构
  7. Ubuntu16.04 LTS安装Android(安卓)studio
  8. 禁止Android(安卓)横屏竖屏切换
  9. Android(安卓)+ eclipse +ADT安装完全教
  10. Android使用FrameLayout应该注意的地方