Android Service那点事

本文源自对其他博客的摘录总结,原文讲解非常详细

原文链接:http://www.cnblogs.com/newcj/archive/2011/05/30/2061370.html


1、Service到底是什么?

Service是Android程序的一部分,就像Activity一样,只是Service是不露面的,如此看来Service是运行在主程序的,这个和Thread有本质区别。

2、Service能干啥?

Service作为主程序的一部分,如果运行耗时代码就不合适了,那还不如用Thread?No,Service和Activity一样有生命周期,进程死掉后必死,而Thread容易失控。Service作为Context的子孙类,可以使用Thread所没有的能力。耗时程序可在Service中新开Thread,在Service的生命周期中管理Thread。

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的生命周期中加入自启动代码也是会被第三方清理工具关闭。


下面附上我的一点demo,demo是源自官方开发文档:

https://yunpan.cn/cxTVFx93LKyIC  访问密码 cbb1

你可能感兴趣的:(service)