暮鼓集 行走集
原作于2014年02月15日
1.Service是可以被系统回收的
Android设计有Memory的回收策略,在可分配内存少于某个值时会启动回收。与前台UI一样,Service也可以被回收。
在STS此前版本,Service启动一个Thread,并使用sleep来等待,这样更容易被系统回收掉。
有如下改善方法:
(1) 在AndroidManifest.xml中给Application增加android:persistent=true 这一项的意思是指明Whether or not the application should remain running at all times。 根据网上的资料,只有App置于system/apps目录下,即作为系统应用时,这一项才会生效。 通常,这种做法是应避免的,只有极少数程序才需要一直运行。
(2) 提高App的优先级 AndroidManifest.xml中给Service增加intent-filter android:priority=”1000”。
(3) 在Serivce启动时调用startForeground 这也可以提高优先级。
(4) OnCreate返回START_STICKY 这样做,当Service被回收后,系统稍后会重新运行。
2.不要使用Sleep进行长时间定时,要使用AlarmManager代替
有两个问题:一是容易被系统回收,