码迷,mamicode.com
首页 > 移动开发 > 详细

认识 Android Service

时间:2016-03-30 13:03:44      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

1.使用Service
2.绑定Service
3.Service的生命周期
--------------------------------------------
1.使用Service

启动Service:
     Content.startService( intent );
停止Service:
     Content.stopService(  intent );
2.绑定Service

绑定服务
     Content.bindService(intent,this,BIND_AUTO_CREATE);
解除绑定服务
     Content.unbindService( this );

绑定完之后,会有两个方法需要实现:
          服务被绑定之后执行
          onServiceConnected(ComponentName name ,IBinder service){ }
          服务所在进程崩溃之后,或者被销毁时执行
          onServiceDisconnected(ComponentName name){ }

技术分享
技术分享
这里需要返回一个实现了IBinder接口的Binder();

例子代码:
创建一个serviceruning,是否运行,默认是false;
技术分享
技术分享
在onCreate中为true时才运行,当为false时,停止运行。
技术分享
技术分享
}.start;
销毁时,设置serviceruning为false,停止线程运行。
技术分享
技术分享
3.Serice生命周期
技术分享

技术分享


同时启动服务并且绑定服务,必须解除绑定服务和停止服务,这个服务才会停止掉。
启动服务,退出当前Activity,发现服务没有被销毁,还在运行,返回Activity,点击销毁服务,服务才销毁;
绑定服务,退出当前Activity,发现抛出一个异常,并取消绑定。
注:

1)  可以通过调用Context.startService()启动一个Service,这可能会触发ServiceonCreate()onStart()操作,具体来说即执行startService()一定会触发onStart(),但如果该Service已经在系统中存在,则onCreate()不会被再次调用,它只在Service第一次启动时触发。

通过Context.startService()启动的Service会一直运行,直到通过Context.stopService()或者stopSelf()停止它。多次通过startService()启动某个服务并不会生成多个实例,但会导致服务的onStart()被多次调用,当然由于只有一个实例,因此无论启动多少次,停止它只需调用一次Context.stopService()stopSelf()就可以了。

2)  也可以通过Context.bindService()来获得一个服务的链接,这个链接是一直会保持到通过Context.unbindService()断掉它。如果在连接时系统中还没有该服务,则可能会新创建一个服务,这时ServiceonCreate函数也同样会被调用。连接建立时会ServiceonBinder会被触发,通过onBinder可以返回连接建立后的IBinder接口对象,使用服务的客户端(比如某个Activity)可以通过IBinder对象和Service交互。

     一个Service如果是通过bindService()启动的,那么它会一直存在到没有任何客户端与它保持连接为止,原因是可能有很多客户端与这个服务保持连接,这时如果某个链接被客户端主动断掉只会是Service的链接数减1,当减至0的时候这个Service就会被销毁。

3)  一个Service既可以被启动(start)也可以被连接(bind),这时Service的生命周期取决于它被创建的方式,如果是通过Context.startService()创建的则和第一种情况一样,如果是通过Context.bindService()使用参数Context.BIND_AUTO_CREATE创建的,则情况和第二种一样。

     当然,在Service停止,被销毁时,会触发其onDestroy()函数,我们需要在这里完成这个Service相关资源的清理,比如停止其子线程,注销监听器等等。

认识 Android Service

标签:

原文地址:http://blog.csdn.net/zuanshisi/article/details/51012499

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!