Android Service
2014-04-28 14:03
197 查看
一个Service可以以以下两种形式存在:
开启服务: 不可以调用服务里面的方法.
如果调用者activity退出了, 服务还会长期的在后台运行
绑定服务: 间接调用服务里面的方法.
如果调用者activity被销毁了, 服务也会跟着销毁
(不求同时生,但求同时挂)
创建 Service 实现Service
需要重载的重要方法
onStartCommand()
Android系统在有其它应用程序组件使用startService()请求启动Service时调用。一旦这个方法被调用,Service处于“Started”状态并可以一直运行下去。如果你实现了这个方法,你需要在Service任务完成时调用stopSelf()或是stopService()来终止服务。如果你只支持“绑定”模式的服务,你可以不实现这个方法。
· onBind()
Android系统中有其他应用程序组件使用bindService()来绑定你的服务时调用。在你实现这个方法时,你需要提供一个IBinder接口以支持客户端和服务之间通信。你必须实现这个方法,如果你不打算支持“绑定”,返回Null即可。
· onCreate()
Android系统中创建Service实例时调用,一般在这里初始化一些只需单次设置的过程(在onStartCommand和onBind()之前调用),如果你的Service已在运行状态,这个方法不会被调用。
· onDestroy()
Android系统中Service不再需要,需要销毁前调用。在你的实现中你需要释放一些诸如线程,注册过的listener,receiver等,这是Service被调用的最后一个方法。
如果一个Service是由startService()启动的(这时 onStartCommand()将被调用),这个Service将一直运行直到调用stopSelf()或其它应用部件调用stopService()为止。
如果一个部件调用bindService()创建一个Service(此时onStartCommand()不会调用),这个Service运行的时间和绑定它的组件一样长。一旦其他组件解除绑定,系统将销毁这个Service。
在Manifest中申明Service
和Activity一样,你必须在Manifest文件中申明应用中使用到的Service。为了声明一个Service,你需要定义<application>的子元素<service>,比如:
来自为知笔记(Wiz)
开启服务: 不可以调用服务里面的方法.
如果调用者activity退出了, 服务还会长期的在后台运行
绑定服务: 间接调用服务里面的方法.
如果调用者activity被销毁了, 服务也会跟着销毁
(不求同时生,但求同时挂)
创建 Service 实现Service
需要重载的重要方法
onStartCommand()
Android系统在有其它应用程序组件使用startService()请求启动Service时调用。一旦这个方法被调用,Service处于“Started”状态并可以一直运行下去。如果你实现了这个方法,你需要在Service任务完成时调用stopSelf()或是stopService()来终止服务。如果你只支持“绑定”模式的服务,你可以不实现这个方法。
· onBind()
Android系统中有其他应用程序组件使用bindService()来绑定你的服务时调用。在你实现这个方法时,你需要提供一个IBinder接口以支持客户端和服务之间通信。你必须实现这个方法,如果你不打算支持“绑定”,返回Null即可。
· onCreate()
Android系统中创建Service实例时调用,一般在这里初始化一些只需单次设置的过程(在onStartCommand和onBind()之前调用),如果你的Service已在运行状态,这个方法不会被调用。
· onDestroy()
Android系统中Service不再需要,需要销毁前调用。在你的实现中你需要释放一些诸如线程,注册过的listener,receiver等,这是Service被调用的最后一个方法。
如果一个Service是由startService()启动的(这时 onStartCommand()将被调用),这个Service将一直运行直到调用stopSelf()或其它应用部件调用stopService()为止。
如果一个部件调用bindService()创建一个Service(此时onStartCommand()不会调用),这个Service运行的时间和绑定它的组件一样长。一旦其他组件解除绑定,系统将销毁这个Service。
在Manifest中申明Service
和Activity一样,你必须在Manifest文件中申明应用中使用到的Service。为了声明一个Service,你需要定义<application>的子元素<service>,比如:
相关文章推荐
- Android Service之设备存储空间监控
- 深入理解Android的startservice和bindservice
- Android Service讲解 和 aidl 实现
- Android中的Service介绍和生命周期
- Android开发之getSystemService
- Android: Service中创建窗口Dialog
- android IntentService的深入理解
- [Android]结合MediaPlayer和Service的音乐播放器
- Android中BindService方式使用的理解
- Android Service 服务及生命周期
- android-service3
- Android ExecutorService线程池
- Android基本功:跨进程调用Services(AIDL Service)
- Android 源码阅读之MMS--细读TransactionService.java
- Android 属性系统 Property service 详细流程分析
- android service 生命周期
- android 中IntentService的作用及使用
- 如何解决Android 5.0中出现的警告:Service Intent must be explicit
- 系出名门Android(4) - 活动(Activity), 服务(Service), 广播(Broadcast), 广播接收器(BroadcastReceiver)
- Android Service被关闭后自动重启,解决被异常kill 服务