做android的程序开发也有了许久了,当做一个大程序的时候,越来越发现service是非常有用的方法,当你想后台运行数据或者音乐播放操作的时候,都可以才有service,根据实际情况,写成local service还是remote service,来帮助整个应用更加稳定。

网上关于service的文章很多,我自己在用的时候也在最初有很多不解,我在这里当作自己的只是备份。

1、什么时候会调用OnDestroy()呢?

最初我是直接连接adb,把我运行起来的service 杀掉,但是我发现他不会进入OnDestroy(),最后发现,只有调用了stopService()或者调用了stopSelf()的时候,才会触发起OnDestroy,也就是如果我们的service

因为程序逻辑或者变量空指针异常等挂掉时候,是不会调用OnDestroy()。

2、程序里什么都没有设置,但是service被自己kill掉后,为什么又可以看到自己启动起来了?

那是因为,Service在被启动起来后,在执行onStartCommand的时候,flags为START_STICKY_COMPATIBILITY,就是说Service在被kill后,是有可能会被重新启动的,这样的返回值一共有四个,分别为

START_STICKY   如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。

START_NOT_STICKY    service被异常kill掉,系统不会自动重启该服务。

START_REDELIVER_INTENT   如果service进程被kill掉,系统会自动重启该服务,并将Intent的值传入。

START_STICKY_COMPATIBILITY    和START_STICKY 差不多,但是不保证服务被kill后一定能重启。

我在网上看了这个资料,可以帮助深入了解一些这几个返回值http://blog.csdn.net/veryitman/article/details/7600008

今天先写这么多,后续继续写》》》》

05-11 22:38