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

狗狗和人做网站建网站 京公网安

狗狗和人做网站,建网站 京公网安,装修效果图制作软件,wordpress 淘宝客赚钱核心设计思想 插桩通过在系统关键流程中插入自定义逻辑,实现对系统行为的监控或修改,同时保持原有代码结构不变。其核心特点是: 无侵入性:不改动原有业务代码动态替换:通过接口/抽象类实现逻辑替换集中管理&#xff…

核心设计思想

插桩通过在系统关键流程中插入自定义逻辑,实现对系统行为的监控或修改,同时保持原有代码结构不变。其核心特点是:

  • 无侵入性:不改动原有业务代码
  • 动态替换:通过接口/抽象类实现逻辑替换
  • 集中管理:统一通过XXXStub类控制实现

换一句程序员喜欢的人话:单例模式和接口解耦实现

本文是使用接口的方式进行实现

桩接口(Stub Interface):

DozePlusStub定义标准接口,提供单例模式插桩

桩实现(Stub Implementation):

DozePlusStubImpl包含实际业务逻辑

桩管理器(Stub Manager):

FadiEngineStub负责实现类的注入

0

1. 系统入口插桩(SystemServer)

在main中是android最早的启动入口,故非常适合插桩点注入

    public static void main(String[] args) {    // 在系统启动时注入自定义实现    // 原理:利用Java类加载机制,在系统服务初始化前完成实现类替换    com.android.server.engine.FadiEngineStub.collectInjectors();    new SystemServer().run(); // 继续正常启动流程}

    2. 桩管理类(FadiEngineStub)

      public class FadiEngineStub {    /**     * 系统级桩注入入口     * 作用:替换系统默认实现为自定义实现     */    private static void collectInjectors() {        // 创建具体实现类并注入到全局桩接口        DozePlusStub.setInstance(Creator.createDozePlusImpl());    }    public static class Creator {        /**         * 工厂方法模式创建具体实现         * 优势:可在此处实现条件化创建(如根据设备类型选择不同实现)         */        public static DozePlusStub createDozePlusImpl() {            return new DozePlusStubImpl(); // 返回带业务逻辑的实现        }    }}

      3. 桩接口设计(DozePlusStub)

      动态替换实现的核心方法setInstance

        package com.android.server.power.dozeplus;public interface DozePlusStub {    static DozePlusStub getInstance() {        return InstanceHolder.get();    }    /**     * 动态替换实现的核心方法     */    static void setInstance(DozePlusStub instance) {        InstanceHolder.set(instance);    }    class InstanceHolder {        private static DozePlusStub sInstance = new DozePlusStub() {        };        private static DozePlusStub get() {            return sInstance;        }        private static void set(DozePlusStub internal) {            sInstance = internal;        }    }    /**     * 插桩方法声明     * 典型应用:在系统原有逻辑中插入自定义事件处理     */    default void screenOnEvent() {        // 默认空实现保证系统不崩溃    }  }

        4. 桩实现类(DozePlusStubImpl)

          public class DozePlusStubImpl implements DozePlusStub {    private long mLastScreenOnTime;    /**     * 实际业务逻辑实现     * 被插入到DeviceIdleController的屏幕状态处理流程中     */    @Override    public void screenOnEvent() {        // 记录屏幕点亮时间(可用于统计亮屏时长等业务)        mLastScreenOnTime = SystemClock.elapsedRealtime();        // 可扩展:在此处添加通知逻辑、性能调优等    }}

          5. 系统原有逻辑插桩点(DeviceIdleController)

            @GuardedBy("this")void updateInteractivityLocked() {    boolean screenOn = mPowerManager.isInteractive();    if (screenOn) {        // >>>>> 插桩点开始 <<<<<        // 原理:在系统原有状态判断逻辑中插入自定义回调        DozePlusStub.getInstance().screenOnEvent();        // >>>>> 插桩点结束 <<<<<        mScreenOn = true;        // ... 原有逻辑 ...    }}

            系统最简单的插桩就是单例模式把事件引过来,为了对于追求代码优雅和解耦的要求,也会进行通过单例模式+接口解耦+反射实现逻辑进行封装,让stub接口类和stubImpl实现类解耦。


            文章转载自:

            http://1euN26mW.mmtbn.cn
            http://J6LGTwFt.mmtbn.cn
            http://TuUufzCk.mmtbn.cn
            http://JtXMIx3F.mmtbn.cn
            http://yjmIFN3T.mmtbn.cn
            http://BzEcsanf.mmtbn.cn
            http://kU1XXFR5.mmtbn.cn
            http://P2k4Us6X.mmtbn.cn
            http://uD7bhYx6.mmtbn.cn
            http://5UO4z591.mmtbn.cn
            http://h0yWX2c0.mmtbn.cn
            http://Au4hMmny.mmtbn.cn
            http://GMHQQtID.mmtbn.cn
            http://OlPDffN4.mmtbn.cn
            http://fOE3K9jQ.mmtbn.cn
            http://U6yVRElk.mmtbn.cn
            http://dTpUu15O.mmtbn.cn
            http://vC82liPb.mmtbn.cn
            http://nNUcx3fc.mmtbn.cn
            http://DTgY2V05.mmtbn.cn
            http://KoAmDp71.mmtbn.cn
            http://tT4mwa3R.mmtbn.cn
            http://RkI86IhY.mmtbn.cn
            http://aCgnDq6t.mmtbn.cn
            http://Aytnyysl.mmtbn.cn
            http://sSIJs19l.mmtbn.cn
            http://AiVpFDSm.mmtbn.cn
            http://6t58QekJ.mmtbn.cn
            http://YTHALHao.mmtbn.cn
            http://NARI7Iqf.mmtbn.cn
            http://www.dtcms.com/wzjs/682471.html

            相关文章:

          • 有做电动车修车的网站吗什么是整合营销并举例说明
          • 网站开发回扣注册公司后每年要交什么费用
          • 学做网站论坛vip账号破解wordpress vue模板
          • 用wordpress建站难吗网站建设怎么分析市场
          • 一个网站有多少页面杭州市下城区建设厅网站
          • 重庆网站网站建设网站开发流程框架
          • 宁夏住房和城乡建设厅网站执业资格全球采购平台
          • 营销型网站建设方案建筑安全员c证查询官网
          • 培训型网站建设义乌网站建设费用多少
          • 公司宣传网站制作网站图片验证码出不来
          • 连云港网站建设费用水利网站建设情况汇报
          • 集团网站 备案网站界面设计软件
          • 互联网站建设维护有关岗位wordpress获取图片id
          • 网站开发毕业答辩演讲稿范文安装wordpress数据库连接时出错
          • 个人网站建设模板下载html网站地图生成工具
          • 网站建设咨询公司王也台球
          • 洮南市城乡和住房建设局网站做网站还是网页设计
          • 绿色软件下载网站推荐第三方网站系统建设
          • 合肥做网站优化公司帝国小说网站模板
          • ps做的网站怎样在dw里打开厦门网站建设有限公司
          • asp网站和php网站邯郸营销型网站建设
          • 泰安网站建设泽讯霸州 网络 网站建设
          • 石家庄视频网站建设公司wordpress 图片热点
          • 专业网站建站公司wordpress 插件翻译
          • 网站开站三合一网站源码
          • 乐山网站seophp开源网站管理系统
          • 企业官网怎么和别的网站做链接做兼职的网站有哪些工作内容
          • 没有服务器建网站海外网络服务器
          • 网页设计视频网站织梦网站后台网址
          • 做空比特币网站公共信息服务平台