您的位置:首页 > 移动开发 > Android开发

Android——本地服务基础(一)

2015-09-30 20:56 253 查看
本地服务用于应用程序内部,可以实现应用程序自己的一些耗时任务,比如查询升级信息,网络传输,或者在一些场合需要在后台执行,比如播放音乐,并不占用应用程序比如activity所属的线程,而是单开线程后台执行,这样用户体验比较好。

一,本地服务的启动方式

1,Context.bindService

1,绑定时,bindService——onCreate()——onBind()

bindService(Intent intent,ServiceConnection conn,int flags)

参数说明:

1,intent:Intent对象,需要定义指向服务器

2,conn:ServiceConnection接口对象,创建该对象要实现它的onServiceConnected(系统调用该方法来传递由Service的onBind方法返回的IBinder)和onServiceDisconnected(对Service的连接意外丢失,比如当Service崩溃或者被杀时,系统会调用该方法)来判断连接成功或者是断开连接

3,bindService之后会自动调用ServiceConnection接口里面的onServiceConnected方法;但是如果执行unbindService方法之后不会自动调用这个接口里面的onServiceDisconnected方法,也就是说执行unbindService只是告诉系统已经和这个服务没有关系了,同时在系统内存不足的时候可以优先杀死这个服务。

注意:Service和需要绑定的Activity在一个包内,否则将无法调用ServiceConnection接口中的上述方法。

2,解除绑定时,unbindService——onUbind——onDestory

如果调用者(例如Activity)直接退出,Service由于与调用者绑定在一起,则Service会随着调用者一同停止。

用Context.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate方法,接着调用onBind方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会调用服务的onUnbind方法,接着调用onDestroy方法。

如果调用bindService方法前服务已经被绑定,多次调用context.bindService方法并不会导致多次创建服务及绑定。

如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService方法,调用该方法也会导致系统调用服务的onUnbind——onDestroy方法

2,Context.startService

1,启动时,startService——onCreate——onStart

2,停止时,stopService——onDestroy

此时如果调用者直接退出而没有停止Service,则Service会一直在后台运行。

Context.startService方法启动服务,在Service未被创建的时候,会先调用Service的onCreate方法,然后再调用OnStart方法.

采用StartService启动的服务,只能调用stopService方法结束服务,服务结束时候会调用onDestroy方法

二,生命周期

Service生命周期一般有两种运行模式。

1,通过Context.startService方法开始,以Context.stopService方法结束,

可以通过Service.stopSelf或者Service.stopSelfResult方法停止自身。stopService只需调用一次便可以将服务停止。

2,通过接口被外部程序调用。外部程序建立一个到Service的连接,通过这个连接来操作Service.创建连接开始于Context.bindService,结束于Context.unbindService多个客户端绑定到同一个Service。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: