Service相关汇集(可续)

官译:Service
001、Service是什么

Service 是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可以处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序交互,而所有这一切均可在后台进行。

002、Service和Thread的区别

1、Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位。可以用 Thread 来执行一些异步的操作。
2、Service:Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如:onCreate,onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上运行的。如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上。因此请不要把 Service 理解成线程,它跟线程半毛钱的关系都没有!
摘:Android中的Service 与 Thread 的区别

003、Service启动方式

①、启动 startService :
Service的生命周期:onCreate() –> onStartCommand() -> onDestroy()
注:启动后再startService 会一直走onStartCommand();
停止服务:stopService(), stopSelf()
②、绑定 bindService :
Service的生命周期 onCreate() –> onBind() –> onUnBind() –> onDestroy()
注:绑定后再bindService 不会走onBind(),无效操作。
注:绑定后再startService 会一直走onStartCommand();
停止服务:unbindService()
③、startService 和bindService 混用
启动:
1、先startService 后bindService :① -> onCreate() –> onStartCommand() -> ② -> onBind()
2、先bindService 后startService :① -> onCreate() –> onBind() -> ② -> onStartCommand()
停止:
1、先stopService() 后 unbindService():① -> ② -> onUnbind() -> onDestroy();
解说:stopService()无打印,unbindService()后onUnbind() -> onDestroy()
2、先unbindService() 后 stopService():① -> onUnbind() -> ② -> onDestroy();
解说:unbindService()后走onUnbind(),stopService()后走onDestroy()
注:③这种混合启动不管先startService还是bindService,停止时调stopService()和unbindService()没有先后顺序,但是这unbindService()和stopService()必须都调用一次才能停止。unbindService()调用多次会抛异常。
推:Android 服务两种启动方式的区别
推:Android Service两种启动方式详解(总结版)
apk:演示安装包

004、Service生命周期

①startService : onCreate() -> onStart() [2.0 以上onStartCommand()下调用onStart()方法] -> onDestroy()
②、bindService : onCreate() -> onBind() -> onUnbind() ->onDestroy()
这里写图片描述
推:Service详解(二):Service生命周期
推:Activity和Service的生命周期(图)

005、IntentService是什么

IntentService是继承自Service并处理异步请求的一个类,其内部采用HandlerThread和Handler实现的,在IntentService内有一个工作线程来处理耗时操作,其优先级比普通Service高。当任务完成后,IntentService会自动停止,而不需要手动调用stopSelf()。另外,可以多次启动IntentService,每个耗时操作都会以工作队列的方式在IntentService中onHandlerIntent()回调方法中执行,并且每次只会执行一个工作线程

006、IntentService使用方法

创建Service继承自IntentService
覆写构造方法和onHandlerIntent()方法
在onHandlerIntent()中执行耗时操作

007、Service和IntentService的区别

Service:不是独立的进程,也不是独立的线程,它是依赖于应用程序的主线程的,也就是说,在更多时候不建议在Service中编写耗时的逻辑和操作,否则会引起ANR。
IntentService:继承Service,那么它包含了Service的全部特性,当然也包含service的生命周期,那么与service不同的是,IntentService在执行onCreate操作的时候,内部开了一个线程,去你执行你的耗时操作。
摘:Android中IntentService与Service的区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值