四组件之Service

来源:互联网 发布:奇葩室友 知乎 编辑:程序博客网 时间:2024/06/10 04:22

what

后台服务,可以理解为后台进程

how and about

理解两种方式的生命周期

startService

stopService

selfStop

bindService

unbindService

IBinder

ServiceConnection:bindService时的activity设置相应的回调接口

例:

 bindService(new Intent(Binding.this,                     LocalService.class), mConnection, Context.BIND_AUTO_CREATE);

第三个参数通常是Context.BIND_AUTO_CREATE,表示service若未启动则自动创建


startForeground设置前台服务(添加了一个notification,旧版本方法是setForeground)


manifest.xml中设定isolatedProcess=true,service作为独立进程工作



onStartCommand的返回值:


START_STICKY:如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。随后系统会尝试重新创建service,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand(Intent,int,int)方法。如果在此期间没有任何启动命令被传递到service,那么参数Intent将为null。

START_NOT_STICKY:“非粘性的”。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务。

START_REDELIVER_INTENT:重传Intent。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统会自动重启该服务,并将Intent的值传入。


START_STICKY_COMPATIBILITY:START_STICKY的兼容版本,但不保证服务被kill后一定能重启。


START_STICKY:如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。随后系统会尝试重新创建service,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand(Intent,int,int)方法。如果在此期间没有任何启动命令被传递到service,那么参数Intent将为null。

START_NOT_STICKY:“非粘性的”。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务。

START_REDELIVER_INTENT:重传Intent。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统会自动重启该服务,并将Intent的值传入。


START_STICKY_COMPATIBILITY:START_STICKY的兼容版本,但不保证服务被kill后一定能重启。
0 0
原创粉丝点击