千家信息网

如何理解Android SERVICE后台服务进程的自启动和保持

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章给大家介绍如何理解Android SERVICE后台服务进程的自启动和保持,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Service组件在android开发中经常遇到,
千家信息网最后更新 2024年09月22日如何理解Android SERVICE后台服务进程的自启动和保持

这篇文章给大家介绍如何理解Android SERVICE后台服务进程的自启动和保持,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Service组件在android开发中经常遇到,其经常作为后台服务,需要始终保持运行,负责处理一些必要(见不得人)的任务。而一些安全软件,如360等,会有结束进程的功能,如果不做Service的保持,就会被其杀掉。

如何保持Service的运行状态是现在要说明的,核心就是利用ANDROID的系统广播,这一不会被其他软件影响的常驻程序触发自己的程序检查Service的运行状态,如果被杀掉,就再起来。

我利用的系统广播是Intent.ACTION_TIME_TICK,这个广播每分钟发送一次,我们可以每分钟检查一次Service的运行状态,如果已经被结束了,就重新启动Service。

下边就是具体的代码和注意事项了:

1、 Intent.ACTION_TIME_TICK的使用

我们知道广播的注册有静态注册和动态注册,但此系统广播只能通过动态注册的方式使用。即你不能通过在manifest.xml里注册的方式接收到这个广播,只能在代码里通过registerReceiver()方法注册。

在ThisApp extends Application 里注册广播:

IntentFilter filter = newIntentFilter(Intent.ACTION_TIME_TICK); MyBroadcastReceiver receiver = new MyBroadcastReceiver(); registerReceiver(receiver, filter);

在广播接收器MyBroadcastReceiver extends BroadcastReceiver的onReceive里

if (intent.getAction().equals(Intent.ACTION_TIME_TICK)) {   //检查Service状态   }

2、Service的检查与启动

boolean isServiceRunning = false; ActivityManager manager = (ActivityManager)ThisApp.getContext().getSystemService(Context.ACTIVITY_SERVICE); for (RunningServiceInfo service :manager.getRunningServices(Integer.MAX_VALUE)) { if("so.xxxx.WidgetUpdateService".equals(service.service.getClassName()))        //Service的类名 { isServiceRunning = true; }    } if (!isServiceRunning) { Intent i = new Intent(context, WidgetUpdateService.class);        context.startService(i); }

另一个话题,Service的开机启动。

实现和上边的类似,也是通过监控开机的系统广播来启动Service。但其实你做了上边的检查也就不会做开机启动了,因为过一两分钟就会通过上边的程序启动Service了。代码如下:

if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Intent i = new Intent(context, LogService.class);     context.startService(i);     }

关于如何理解Android SERVICE后台服务进程的自启动和保持就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

广播 检查 状态 系统 运行 后台 进程 服务 上边 代码 程序 内容 动态 就是 方式 更多 软件 帮助 不错 安全 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 如何用命令修改时钟服务器的ip 软件开发的功能周期包括 福州网络技术学院排名 医学检索数据库有哪些 网络安全结构是什么意思 网络安全战略研究所所长 查找设备无法连接服务器什么意思 中国物联网络技术有限公司 计算机网络技术应用模块三 网络安全文字寓意 深圳高清视频会议服务器哪家好 大连诺德网络技术 走it运维还是软件开发 服务器内存条带马甲的怎么还便宜 美团饿了么软件开发公司 游族网络技术优化 飞哥网络技术 北京服务器防火墙好不好 山西电商软件开发应用 网络安全靠人民班会总结 西安软件开发品牌 数据库原理与技术和操作系统 换路由器找不到服务器 网络安全的主要技术有访问控制 服务器管理有哪些工作 用sql语句建立一个数据库 人工智能和数据库哪个前景好 网络安全密码与口令的概念 盐城无线网络技术口碑推荐 青岛小牛网络技术有限公司
0