什么时候用Service

        Service就是一种运行在后台的组件,甚至从始至终用户都不需要和它进行交互,比如Service可以处理一些网络事物,播放音乐,I/O文件传输,或者和Content provider交互。如果需要注意的是,一个Service运行在它宿主线程的主线程上,Service不会自己创建一个新的线程,也不会在一个独立的线程上运行(除非你指定它),也就是说如果你要用Service来执行大量的占用CPU的操作,或者是运行耗时的阻塞操作,例如后台播放MP3,或者网络事物,那么你就应该创建一个新的线程来实现Service去完成这些任务,通过创建新的线程,你降低ANR(Application Not Respond)的风险,不影响主线程保持与用户的交互。

  线程和Service就有一定的相似性,到底什么时候用Service,什么时候用Thread呢?在Google官方文档里这样写:如果你需要在主线程之外来完成你的任务,但只发生在在用户与当前Application进行交互的时候,就创建线程来实现它,而不是Service。比如说,如果你想播放音乐,但是只想在当前Activity运行的时候,如果当前Activity死掉了,那么也就停止播放,你可以在onCreate()中创建新的线程,在onStart()中开始运行线程,然后在onStop()中停止这个线程。你也可以考虑用异步加载AsyncTask或者HandlerThread的方式来代替传统的线程。谨记一个Service是在当application的主线程上跑,如果要进行大量的操作,那么就创建一个新的线程来实现Service。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值