Service的调用
来源:互联网 发布:电影票app推荐软件 编辑:程序博客网 时间:2024/06/05 10:42
原文地址:http://apps.hi.baidu.com/share/detail/23409277
作者: 彭俊维
2. Service的调用
(1)Context.startService():Service会经历onCreate -> onStart(如果Service还没有运行,则android先调用onCreate()然后调用onStart();如果Service已经运行,则只调用onStart(),所以一个Service的onStart方法可能会重复调用多次 );stopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行。该Service的调用者再启动起来后可以通过stopService关闭Service。 注意,多次调用Context.startservice()不会嵌套(即使会有相应的onStart()方法被调用),所以无论同一个服务被启动了多少次,一旦调用Context.stopService()或者stopSelf(),他都会被停止。补充说明:传递给startService()的Intent对象会传递给onStart()方法。调用顺序为:onCreate --> onStart(可多次调用) --> onDestroy。
(2)Context.bindService():Service会经历onCreate() -> onBind(),onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用onUnbind -> onDestroyed相应退出,所谓绑定在一起就共存亡了 。补充说明:传递给bindService()的Intent对象会传递给onBind(),传递给unbindService()的Intent对象会传递给onUnbind()方法。 调用顺序为:onCreate --> onBind(只一次,不可多次绑定) --> onUnbind --> onDestory。
(3)注意事项:在Service每一次的开启关闭过程中,只有onStart可被多次调用(通过多次startService调用),其他onCreate,onBind,onUnbind,onDestory在一个生命周期中只能被调用一次。还有一点,目前我没有遇到过需要startService和bindService交互使用的情况(我认为不会有这种需求),所以不必去考虑交互的问题,待遇到时再考虑不迟。
(4)BroadcastReceiver只能通过startService启动Service ,因为广播本身生命周期很短,bind的话没有意义:Method bindService can not be called from an BroadcastReceiver component. A pattern you can use to communicate from an BroadcastReceiver to a Service is to call startService(Intent) with the arguments containing the command to be sent, with the service calling its stopSelf(int) method when done executing that command. See the API demo App/Service/Service Start Arguments Controller for an illustration of this. It is okay, however, to use this method from an BroadcastReceiver that has been registered with registerReceiver(BroadcastReceiver, IntentFilter), since the lifetime of this BroadcastReceiver is tied to another object (the one that registered it).
- Service的调用
- Service的远程调用
- Service的远程调用
- Service的远程调用
- Service的远程调用
- service的本地调用
- service的远程调用
- Web Service 的异步调用
- Activity调用Service的方法
- service的自调用 VS service之间调用
- Android Service 的使用(三)----远程Service的调用
- Service调用
- 初识 Service(二) 演示: Activity 调用Service的接口
- Web Service 第六课之 调用Web Service的本质
- spring中service调用service的事务控制
- 初识 Service(二) 演示: Activity 调用Service的接口
- Web Service的客户端javascript调用
- Web Service的客户端javascript调用
- java反射技术的简单使用
- Java抽象类和接口的区别
- C#与.NET4 高级程序设计-----委托、事件 学习笔记
- 描述数据库启动阶段
- VS2008快捷键
- Service的调用
- Hierarchy
- Create shared disk for Oracle RAC on VMWare
- JSLinux--A web linux base on Javascript and QEMU
- 利用js在table中添加tbody块,方便整块的添加和删除
- swith 引起的: expected expression before 'XXX'的 error
- 描述数据库启动阶段
- Aop简单应用实例,注解模式
- 常用sql