当前位置: 首页 > news >正文

系统端实现看门狗功能

前言:系统端实现看门狗功能

文章目录

  • 需求
  • 实现方案介绍
  • 一、修改文件
  • 二、实现思路
  • 三、实现方案
    • binder机制定义接口 - IPackageManager.aidl
    • 客户端实现 - IPackageManagerBase- 使用
    • 服务端 - PackageManagerService 具体业务实现
      • 导入头文件
      • 声明Handler定时-缓存-集合列表存储投喂数据
      • Handler Loop 起来
      • 看门狗业务逻辑处理
      • PackageManager 对外释放接口
      • ApplicationPackageManager 对外释放接口实现类,实现具体业务
  • 四、坑点
    • PackageManager 类中创建抽象方法失败
    • 输出jar 给上层应用调用
    • 新增aidl接口方法需要同步api
  • 五、应用端调用系统接口
    • 添加监控-喂狗
    • 删除指定的监控程序
    • 停止看门狗-停止所有监控
    • 获取当前监控的程序
  • 总结


需求

各种行业定制软件,需要看门狗功能,按照系统端看门狗机制,不断喂狗,如果一段时间内发现没有喂狗了则根据喂狗类型进行对应的重启应用、服务 等相关机制的处理。
具体需求如下:

  • 以看门狗形式,喂狗机制,一分钟之内如果未收到投喂信息,则 根据喂狗类型系统重新拉起程序、执行某个程序某个业务
  • 能够实现一个看门狗,监听多个应用
  • 能够让看门狗停止其中一个监听,不让监听自己了
  • 能够让看门狗停止所有监听
  • 获取当前看门狗的监听的程序,可以理解为包名

客户大多数看门狗机制是为了防止app 挂了,保活机制。

实现方案介绍

  • 直接用系统看门狗机制实现:但是看门狗太复杂了,监听ANR、crash ,定制监听逻辑比较麻烦,不推荐。
  • 在一个服务里面或者自己写一个服务:循环检测+判断当前进程是否存在,来处理某个app 的业务逻辑
  • 在一个服务里面或者自己写一个服务:循环检测,不断监听用户是否投喂,利用缓存时间来判断app 是否正常工作。如果在一个周期内发现监听的程序不投喂了,那么就启动业务逻辑对app 进行业务处理。

一、修改文件

/frameworks/base
http://www.dtcms.com/a/569265.html

相关文章:

  • 算法--二分查找(二)
  • 没有网站备案可以做诚信认证嘛商城网站大概多少钱
  • 保定市场产品投放策略分析
  • Linux网络——连接、TCP全连接队列TCPdump抓包
  • Firefox 浏览器:引领网络浏览新时代
  • 【个人成长笔记】解决在Linux/Windows系统中 git pull 之后提示有未提交的更改错误信息(亲测有效)
  • 分布式训练一站式入门:DP,DDP,DeepSpeed Zero Stage1/2/3(数据并行篇)
  • 优化网站的目的佛山标书设计制作
  • Slurm:高性能计算集群的调度利器
  • Qt 开发终极坑点手册图表版本
  • 2019阿里java面试题(一)
  • 云手机与云服务器之间的关系
  • 网站建设的经验东莞大岭山楼盘最新价格表
  • 网站策划书 范文兰州装修公司哪家口碑最好
  • SNN最新文献合集-1104(会议论文)
  • 简单理解:FreeRTOS 中,信号量(Semaphore)函数及其作用
  • 【计算机网络】IO复用方法(三)——poll
  • 企业门户网站建设方案及报价广告网名
  • 【海思】在Ubuntu20.04上搭建可以成功编译Hi3559AV100的环境_20251104
  • Vue中iFrame跨窗口通信实现与源码解析
  • 做设计有哪些接私活的网站做钓鱼网站获利3万
  • git常用的指令-(工作中常用)
  • <数据集>yolo航拍交通目标识别数据集<目标检测>
  • 做标准件网站在ppt里面做网站链接
  • 关于网站建设的调研报告电商专业就业前景
  • 做百度糯米网站的团队做的比较好的个人网站
  • 天津市建设厅官方网站网站用绝对路径好还是相对路径seo
  • DevExpress WPF v25.2新功能预览 - 支持将JetBrains Rider与报表设计器集成
  • 力扣热题100道之102二叉树的层序遍历
  • SQLite Truncate Table: 完全删除表中的数据