1、Service到底是什么?
Service是Android程序的一部分就像Activity一样,只是Service是不露面的,主要执行一些后台程序,Service运行在主程序MainThread,就是应用UI主线程。
2、Service能干啥?
Service作为主程序的一部分,如果在Service中执行耗时程序将会导致UI阻塞,那么使用Serivce还不如直接使用Thread异步操作耗时程序。虽然Thread可实现多线程,但是Thread在使用时容易失控,而Service作为Android的组件之一,有严格的生命周期,使用Service时可以在不同生命阶段做不同操作,耗时程序可以在Service中新开独立线程。
3、Service的启动方式
BindService:将服务绑定到某个clients上,可通过IPC机制实现通信,onCreate()方法只执行一次。在Unbind或绑定的context消失后Service结束。
StartService:通过StartService启动,onCreate()方法只执行一次,onStartCommand()方法每次执行。在stopService或finishSelf时结束。
BindService+StartService:同时满足两个条件才可以关闭service。
4、LocalService和RemoteService
LocalService在原来进程中,而RemoteService在独立进程的主线程运行,RemoteService的申明需要加process属性android:process=“:name”,name可任意定义。
5、杀不死的后台服务
在平时的使用中会发现很多的应用服务无法通过第三方工具(360)关闭释放内存。这个和工具白名单有关系。另外有些是通过两个服务之间互相监控避免被杀死。
在Service的生命周期中加入自启动代码也是会被第三方清理工具关闭。
本文源自对其他博客的摘录总结,原文讲解非常详细
http://www.cnblogs.com/newcj/archive/2011/05/30/2061370.html
下面附上我的一点demo,demo是源自官方开发文档:
https://yunpan.cn/cxTVFx93LKyIC 访问密码 cbb1