Android中怎么启动关闭Service及功能解释

 我来答
唯爱凌宝宝
2015-05-27 · TA获得超过2万个赞
知道大有可为答主
回答量:8282
采纳率:15%
帮助的人:8890万
展开全部
 //首先注册服务
  <service
  android:name="com.wangdeyu.service.MusicService"
  android:exported="false" >
  <intent-filter>
  <action android:name="com.abc" />
  </intent-filter>
  </service>
  
  //启动服务
  Intent service=new Intent(" com.abc");
  startService(service);
  //Service生命周期
  ①onCreate() 创建Service
  ②onStart(Intent intent, int startId) 启动Service
  ③onDestroy() 销毁Service
  //关闭服务
  stopService(service);
  
  Service的生命周期方法比Activity少一些,只有onCreate, onStart, onDestroy
  我们有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。
  1 通过startService,就是上面这种
  Service会经历 onCreate --> onStart
  stopService的时候直接onDestroy
  如果是 调用者 直接退出而没有调用stopService的话,Service会一直在后台运行。
  下次调用者再起来仍然可以stopService。
  2 通过bindService
  Service只会运行onCreate, 这个时候 调用者和Service绑定在一起
  调用者退出了,Srevice就会调用onUnbind-->onDestroyed
  所谓绑定在一起就共存亡了。
  注意:Service的onCreate的方法只会被调用一次,
  就是你无论多少次的startService又 bindService,Service只被创建一次。
  如果先是bind了,那么start的时候就直接运行Service的onStart方法,
  如果先是start,那么bind的时候就直接运行onBind方法。如果你先bind上了,就stop不掉了,
  只能先UnbindService, 再StopService,所以是先start还是先bind行为是有区别的。
  Android中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。
  服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。
  这两个方法都可以启动Service,但是它们的使用场合有所不同。使用startService()方法启用服务,调用者与服务之间没有关连,
  即使调用者退出了,服务仍然运行。使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。
  如果打算采用Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,
  接着调用onStart()方法。如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,
  但会导致多次调用onStart()方法。采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。
  如果打算采用Context.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,
  接着调用onBind()方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方法,
  接着调用onDestroy()方法。如果调用bindService()方法前服务已经被绑定,
  多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。
  如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法.
QQMSD8
2015-12-10 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部
android中Service是运行在后台的东西,级别与activity差不多。既然说service是运行在后台的服务,那么它就是不可见的,没有界面的东西。可以启动一个服务Service来播放音乐,或者记录地理信息位置的改变,或者启动一个服务来运行并一直监听某种动作。Service和其他组件一样,都是运行在主线程中,因此不能用它来做耗时的请求或者动作。

服务一般分为两种:
1:本地服务, Local Service 用于应用程序内部。在Service可以调用Context.startService()启动,调用Context.stopService()结束。在内部可以调用Service.stopSelf() 或 Service.stopSelfResult()来自己停止。无论调用了多少次startService(),都只需调用一次stopService()来停止。
2:远程服务, Remote Service 用于android系统内部的应用程序之间。可以定义接口并把接口暴露出来,以便其他应用进行操作。客户端建立到服务对象的连接,并通过那个连接来调用服务。调用Context.bindService()方法建立连接,并启动,以调用 Context.unbindService()关闭连接。多个客户端可以绑定至同一个服务。如果服务此时还没有加载,bindService()会先加载它。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式