笔者上篇做了一个定时提醒的小应用,但是最后遗留了一个问题,那就是如果设置提醒的间隔时间过长,那么计时的service便会被android系统kill掉。(主要是由于android自带内存清理)
在进行了大量的查阅和测试后,笔者终于解决了该问题:
当然,在此也要稍微提一下,笔者只测试了,在以一小时为左右的时间内可以不被杀死,还没有测试2个小时以上的情况,更没有测试以天为单位的时间,具体测试如下:(item右下角是程序执行的时间)
![](https://box.kancloud.cn/2016-03-01_56d551ef823d5.jpg)
好了,进入正题,如何解决service会被kill的情况呢?
那就是设置**前台服务**,那什么是前台服务呢?
如果你希望服务可以一直保持运行状态,而不会由于系统内存不足的原因导致被回收,就可以考虑使用前台服务。前台服务和普通服务最大的区别就在于,它会一直有一个正在运行的图标在系统的状态栏显示,下拉状态栏后可以看到更加详细的信息,非常类似于通知的效果。
接下来就以墨迹天气为例,如下图:
![](https://box.kancloud.cn/2016-03-01_56d551efb0ece.jpg)
大家有没有想过,墨迹天气是如何能够在后台不断更新通知栏的中天气,并且不被kill掉的呢?
没错,就是用到了**前台服务**。好了,接下来就讲一下具体怎么使用。
首先看一下整个Service的代码:
~~~
public c