Service学习启动方式之startService
Service定义及用处:
A service is an application component that can perform long-running operations in the background and does not provide a user interface。
一般service用于实行某些用时使用,或是控制台实行不出示客户互动页面的使用,比如:下載、播放音乐。
Service生命期 :
Android Service的生命期不一定像Activity那麼繁杂,它只承继了onCreate(),onStart(),onDestroy()3个方式,当你初次起动Service时,依次启用了onCreate(),onStart()这2个方式,当终止Service时,则实行onDestroy()方式,这儿必须留意的是,假如Service早已起动了,当你再度起动Service时,不容易在实行onCreate()方式,只是立即实行onStart()方式,实际的能看下边的案例。
Service与Activity通讯:
Service后web端统计资料最后還是要展现在web开发Activity之中的,由于起动Service时,体系会再次打开1个新的程序,这就牵涉到不一样进程间通信的难题了(AIDL)这每节我未作过多叙述,当你想获得起动的Service案例时,人们能够采用bindService和onBindService方式,他们各自实行了Service中IBinder()和onUnbind()方式。
这儿要谈及一些:承继service的子类在重写service的方式中,除开1个onStart()方式以外,有个onStartCommand()方式,相关onStartCommand()方式略微作点介紹:
Android设计规划的流程中,每一次启用startService(Intent)的当时,都是启用该Service成员变量的onStartCommand(Intent,int,int)方式,随后在onStartCommand方式中做某些解决。随后人们留意到这一涵数有个int的返回值,这篇文章也是简易地讲下int返回值的功效。
从Android管方word表格中,人们了解onStartCommand有4种返回值:
START_STICKY:假如service程序被kill掉,保存service的情况为开使情况,但不保存寄送的intent成员变量。接着体系会试着再次建立service,因为业务情况为开使情况,因此建立业务后必定会启用onStartCommand(Intent,int,int)方式。假如在此期间没有任何启动命令被传送到service,那麼叁数Intent将为null。
START_NOT_STICKY:“非黏性的”。应用这一返回值时,假如在实行完onStartCommand后,业务被不正常kill掉,体系将会把它置为started情况,体系不容易自动重启该业务,直至startService(Intent intent)方式再度被启用;。
START_REDELIVER_INTENT:重传Intent。应用这一返回值时,假如在实行完onStartCommand后,业务被不正常kill掉,体系会自动重启该业务,并将Intent的值传到。
START_STICKY_COMPATIBILITY:START_STICKY的适配板本,但不确保业务被kill后必须能重新启动。
拥有 Service 类人们怎样起动他呢,有二种方式:
• Context.startService()
• Context.bindService()
1. 在相同运用一切地区启用 startService() 方式就能起动 Service 了,随后体系会回调 Service 类的 onCreate() 及其 onStart() 方式。那样起动的 Service 会始终运作在控制台,直至 Context.stopService() 或是 selfStop() 方式被启用。另一个假如1个 Service 早已被起动,别的编码再尝试启用 startService() 方式,是不容易实行 onCreate() 的,但会再次实行多次 onStart() 。
2. 另一个这种 bindService() 方式的含意是,把这一 Service 和启用 Service 的顾客类绑起来,假如启用这一顾客类被消毁,Service 也会被消毁。用这一方式的1个益处是,bindService() 方式实行后 Service 会回调上面提及的 onBind() 方发,你能从这儿回到1个保持了 IBind 插口的类,在服务端使用这
相关文章
- 2条评论
- 萌懂怀桔2022-05-28 23:44:02
- 非黏性的”。应用这一返回值时,假如在实行完onStartCommand后,业务被不正常kill掉,体系将会把它置为started情况,体系不容易自动重启该业务,直至startService(Intent intent)方式再度被启用;。
- 温人青尢2022-05-28 18:02:47
- vice 类人们怎样起动他呢,有二种方式: • Context.startService() • Context.bindService()