首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    小白也能看懂的插件化DroidPlugin原理(三)-- 如何拦截startActivity方法

    前言:在前两篇文章中分别介绍了动态代理、反射机制和Hook机制,如果对这些还不太了解的童鞋建议先去参考一下前两篇文章。...对此有不明白的童鞋建议再看一遍上一篇博文《小白也能看懂插件化DroidPlugin原理(二)-- 反射机制和Hook入门》。...带着这个目标我们很轻松就在 Activity 源码的 attach() 方法中找到如下代码:   Activity.attach() 的源码如下(注意第8行和第26行): 1   final void...三、小结   本篇文章通过拦截 Context.startActivity() 和 Activity.startActivity() 两个方法,将上一篇文章中介绍的 Hook 技术实践 Activity...参考文章 《Android插件化原理解析——Hook机制之动态代理》 《Android应用程序的Activity启动过程简要介绍和学习计划》

    1.1K60

    Instrumentation框架介绍-Android自动化测试系列(三)

    Activity Manager使用Instrumentation框架来启动和控制TestRunner,这个TestRunner反过来又使用Intrumentation来关闭任何主程序的实例,然后启动测试程序及主程序...Instrumentation框架通过将主程序和测试程序运行在同一个进程来实现这些功能。...它能触发一次setup()和tearDown(),而不是每个方法调用时都触发。如果你的测试方法都是针对同一个Activity的话,那就使用它吧。...ActivityUnitTestCase 对单个Activity进行单一测试的类。使用它,你可以注入模拟的Context或Application,或者两者。它用于对Activity进行单元测试。...这个类控制应用程序处于测试环境中,在同一个进程中运行测试程序和主程序,并且将测试结果输出到合适的地方。

    4.1K81

    深入理解Android中的startActivity过程

    一、startActivity的过程 1.1 发起startActivity请求 当应用程序调用startActivity方法时,会将请求传递给ActivityManagerService(AMS)。...AMS是一个系统级服务,负责管理应用程序的生命周期、任务栈和进程。具体的调用过程为:首先,在应用程序中调用Context.startActivity(Intent)方法,传入一个Intent对象。...然后,ContextImpl.startActivity()方法会将请求传递给Instrumentation.startActivity()。...1.2 处理startActivity请求 AMS接收到startActivity请求后,会进行一系列的检查和准备工作,包括检查调用者的权限,解析Intent,查找目标Activity的ComponentName...3.3 将ApplicationThread和ActivityThread关联起来的过程 时序图解释: 客户端(Client)调用 startActivity(intent),将请求发送给ActivityManagerService

    48210

    Android Intent.FLAG_ACTIVITY_NEW_TASK的个人理解「建议收藏」

    startActivity(Intent intent) { mBase.startActivity(intent); } 熟悉Android委托机制的应该知道,这个mBase...实际指向的是ContextImpl这个类,我们再来看这个类中的startActivity方法 @Override public void startActivity(Intent intent,...类型为ReceiverRestrictedContext,和Service一样,都没有重写startActivity),如果不加FLAG_ACTIVITY_NEW_TASK的话会报如下错误的原因 "Calling...现在在回到开头,FLAG_ACTIVITY_NEW_TASK从字面上来理解,意思是:把将要启动的Activity放在一个新栈中,既然是新栈,那它的taskId和启动它的Activity所在的taskId...原来这个这个属性,还有不少隐藏的信息,它的原则是:设置此状态,首先会查找是否存在和被启动的Activity具有相同的亲和性的任务栈(即taskAffinity,注意同一个应用程序中的activity的亲和性一样

    1.8K30
    领券