网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

如何让Android的service一直在后台运行?

Service是Android四大组件之一,同时也是四大组件中和Activity最相似的组件,都代表着可执行的程序,他们的区别在于Service一直在后台运行,没有用户界面,一旦被启动就和Activiy一样拥有生命周期,一般来说,需要显示界面则使用Activity,不需要则可以选择Service

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的海珠网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

Activity的生命周期在于用户打开与关闭,从用户打开程序到用户关闭程序之间存在,那么Service呢?他的生命周期在于什么,是否也是在用户的打开与关闭,Service能否一直存在于后台

一般情况下,只有系统自带的应用或者厂商定制的应用拥有比较高的优先级能够保持后台服务一直运行,也就是,可以通过root后给予相应高的权限,理论上可以做到一直存在于后台的服务,那么对于未root的系统呢?

这时候就需要一些小技巧和方法

  • 监听开机事件,显式启动后台服务,设置优先级,使用AlarmManager发送定时任务检查是否运行,如果不允许就重新启动

  • 把service和activity分开,让service开机启动。设置一个broadcast receiver接受开机信号,使用RECEIVE_BOOT_COMPLETED的permission, 然后启动service。activity启动后绑定到service上,通过ipc机制通信,acitivity结束后松绑。注意安装后要手动启动service,不会自动启动,之后重启手机后才会随开机启动。

  • 在内存低的时候系统会自动清理进程,这时候后台service可能会被杀掉。可以在onStartCommand中返回START_STICKY,这样系统有足够多资源的时候,就会重新开启service。

  • 使用startForeground启动后台服务“前台运行”的优先级,类似于手机的音乐播放软件,在打开音乐播放软件时会在通知栏显示一条播放进度通知条,因为它能够使后台服务获取到前台的优先级权限从而避免被系统干掉,这种做法也是官方所推荐的

“A started service can use the startForeground(int, Notification) API to put the service in a foreground state, where the system considers it to be something the user is actively aware of and thus not a candidate for killing when low on memory. (It is still theoretically possible for the service to be killed under extreme memory pressure from the current foreground application, but in practice this should not be a concern.)”

也就是说,其实第四种方法更为方便并且被官方所推荐

而 startForeground 的使用也是很简单的,只需要修改onCreat的内容,在其中创建Notification对象,然后用调用 startForeground(1, Notification)即可实现


当前文章:如何让Android的service一直在后台运行?
转载来于:http://bjjierui.cn/article/gjshjj.html

其他资讯