监听后台Service是否被Kill并重新启动Service
来源:互联网 发布:用户画像数据建模案例 编辑:程序博客网 时间:2024/05/16 06:01
在这篇文章中,我们会用到一个系统广播---系统时钟广播,即Intent.ACTION_TIME_TICK,在说之前,我们先了解下这个广播的情况,看文档上说的:
在众多的Intent的action动作中,Intent.ACTION_TIME_TICK是比较特殊的一个,根据SDK描述:
**Broadcast Action: The current time has changed. Sent every minute. You can not receive this through components declared in manifests, only by exlicitly registering for it withContext.registerReceiver()**
意思是说这个广播动作是以每分钟一次的形式发送。但你不能通过在manifest.xml里注册的方式接收到这个广播,只能在代码里通过registerReceiver()方法注册。
下面开始进入文章的主题,开发守护进程或者天气预报一些定期检查服务是否存在操作时我们就需要用到ACTION_TIME_TICK。
排除了静态注册这个广播的情况(xml中注册),我们只能在代码中来进行动态注册了,因为这个广播是要一直存在并监听的,所以为了避免繁琐注册,解除注册而多些一些重复代码,广播的接收器的注册可以写在Activity的基类中,如果应用没有定义一个基类的话,这里提供一种思路,可以定义一个类myApp传承自Application,然后在AndroidManifest中指定为应用的application类,然后在这个类中做广播的动态注册,且这个类对象的生命周期是整个应用的生命周期,所以无须进行解除广播注册,不用担心发生内存泄露的问题。
直接上代码,在myApp类中onCreate方法上调用
IntentFilter filter=new IntentFilter();filter.addAction(Intent.ACTION_TIME_TICK);registerReceiver(receiver,filter);
定义广播接收器对象
private final BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(Intent.ACTION_TIME_TICK)) { //do what you want to do ...13 } } };
这样子就可以每分钟接收到一个系统广播了,接着在这个广播中我们就可以做自己的事情了,也就是本章的重点问题,检测Service是否被Kill掉并重新启动服务
代码如下
public static boolean isServiceRunning(Class<?> serviceClass) { ActivityManager activityManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningServiceInfo> serviceList = activityManager .getRunningServices(Integer.MAX_VALUE); if (serviceList == null || serviceList.size() == 0) return false; for (RunningServiceInfo info : serviceList) { if (info.service.getClassName().equals(serviceClass.getName())) return true; } return false;}
现在大家可以自己动手写个demo试试咯
- 监听后台Service是否被Kill并重新启动Service
- 开发一个后台service,每隔1秒输出系统时间,并可重新启动或停止服务
- android避免service被kill
- Android Service后台服务进程意外被kill掉之后如何重启
- Android判断后台服务(Service)是否运行
- 采用Service监听电话并录制
- 系统休眠,防止service被kill
- service能否实现不被Kill
- Service防止被Kill的方法整理
- android service不被kill的方法
- 永不Kill的Service
- 探讨Android实现后台(Service)按键监听的功能
- Android中让Service被关闭后再重新启动
- Android中让Service被关闭后再重新启动
- 保证service在后台不被kill
- android 之service实现电话监听并录音
- 监听网络,启动Service
- Service-监听手机来电
- Cg parallax mapping
- YUV格式&像素
- ASp.Net Websocket 环境支持和前端代码实现(二)
- yum安装php5.4或5.5
- 集合竞价-CCF测试往届题(50分)
- 监听后台Service是否被Kill并重新启动Service
- @@identity与scope_identity()函数的区别
- 百度地图使用心得
- highcharts获取数轴最大最小值及时间轴赋值
- 设计模式 模版方法模式 展现程序员的一天
- php字符串截取自定义函数
- 原型模式
- xib自动布局添加约束
- 这个小程序员背后的女人