android service简介 .

  service  

介绍:
应用程序的一个组件,可以在后台长时间执行耗时操作,并没有提供一个用户界面。另一个应用程序组件可以启动一个服务,它会继续在后台运行,即使用户切换到另一个应用程序。此外,一个组件可以绑定到一个服务与它交互,甚至进行进程间通信(IPC) 。例如,服务可能处理网络服务,播放音乐,执行文件的I / O等。默认情况下,一个服务运行在承载它的应用程序的主线程中。 

来自官方开发者文档:
 A services runs in the same process as the application in which it is declared and in the main thread of that application, by default. So, if your service performs   
intensive or blocking operations while the user interacts with an activity from the same application, the service will slow down activity performance. To avoid  

impacting application performance, you should start a new thread inside the service. 


在主线程中运行的服务,其宿主进程的服务并不创建它自己的线程,并不在一个单独的进程运行(除非您另行指定) 。这意味着,如果你的服务是打算做任何CPU密集型工作或阻塞操作(如MP3播放,或网络),你应该创建一个新线程在服务做这项工作 。通过使用一个单独的线程,你会降低应用程序无响应(ANR)错误,并致力于用户交互的应用程序的主线程可以继续与您的活动的风险。 


开启服务的两种方式:
1. startService(Intent service) 
2. bindService(Intent service, ServiceConnection conn, int flags)


区别:如果用startService方式启动服务,服务会常驻在内存中。除非用户手动停止。 只有当内存低,必须恢复对系统资源的活动,用户关注的焦点Android系统将强制停止服务, 。如果该服务是必然的活动,用户关注的焦点,那么它是不太可能被销毁,并宣布如果该服务是在前台运行,那么它几乎不会被杀死。否则,如果该服务已启动,并长期运行的,那么该系统将降低其随着时间的推移和服务的后台任务列表中的位置将变得非常容易受到销毁,如果您的服务已启动,那么你必须设计妥善处理系统重新启动。如果系统销毁你的服务,尽快重新启动它作为资源再次可用(尽管这也取决于你返回值onStartCommand( ))。


如果用bindService方式启动服务,启动服务的组件被系统销毁前,服务会被系统销毁。也就是受服务的生命周期会随着启动它的组件的销毁而消亡。 


注意:bindService开启了一个服务后,一定要记得执行停止服务操作。否则系统将会抛出 android.app.ServiceConnectionLeaked异常


生命周期


1. startService --->onCreate--->onStartCommand---> onDestroy  服务关闭

2. bindService--->onCreate--->onBind--->onUnbind---> onDestroy服务关闭


官方开发者文档:



 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值