- 博客(17)
- 收藏
- 关注
原创 2.插件化之Android进程启动流程及类加载机制
双亲委派机制是Java类加载机制中非常重要的一环,它描述了类加载器在加载类时的一种协作策略。该机制的基本思想是,当一个类加载器收到类加载请求时,首先不会自己尝试加载这个类,而是将这个请求委派给它的父类加载器去完成。只有当父类加载器无法加载该类时(即在父类加载器的搜索范围内未找到所需的类),子加载器才会尝试自己加载该类。最后再简单介绍一下双亲委派机制,一些插件化框架会利用双亲委派机制指定class的加载优先级。方法来创建的,我们来跟一下makeApplication的代码。
2024-07-31 12:30:14
420
原创 鸿蒙开发基础应用模型和项目结构
每个Entry类型或者Feature类型的HAP在运行期都有一个AbilityStage类实例,当HAP中的代码首次被加载到进程中的时候,系统会先创建AbilityStage实例。UIAbility组件和ExtensionAbility组件Stage模型提供UIAbility和ExtensionAbility两种类型的组件,这两种组件都有具体的类承载,支持面向对象的开发方式。UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互。
2024-07-30 16:41:32
829
原创 鸿蒙面试题
鸿蒙状态管理–组件级别的状态管理有哪些 @State、 @Prop、 @Link、 @Provide和@Consume、@ObjectLink和@Observed@State装饰的变量,或称为状态变量,一旦变量拥有了状态属性,就可以触发其直接绑定UI组件的刷新。当状态改变时,UI会发生对应的渲染改变。在状态变量相关装饰器中,@State是最基础的,使变量拥有状态属性的装饰器,它也是大部分状态变量的数据源。
2024-07-22 12:19:35
1228
原创 1.插件化概念和使用演示
安卓插件化,作为一种先进的应用架构技术,它打破了传统单体应用开发模式的壁垒,允许将一个完整的应用程序拆分成多个独立的功能模块——插件。每个插件作为一个独立的单元,可以包含用户界面组件、业务逻辑、资源文件以及其它必要组件,并且能够根据需求在运行时动态加载到主应用中。
2024-04-08 16:44:08
358
原创 7.gradle插件入门以及发布插件
其实并不是我们没有创建,而是我们使用的 java-gradle-plugin 插件会自动帮我们将上述的步骤实现,在build目录下可以查到,新建插件也只需要增加一个闭包即可,如test2Plugin,而不需要再创建一个properties文件,当然如果插件特别多,十几个或者几十个,会导致builid.gradle文件代码较多。下一篇我们进行一下gradle插件的实战,开发一个有用的gradle插件。在build.gradle写的一个插件,哈哈哈。可以看到我们依赖的三种方式创建的插件都打印了。
2024-02-06 11:47:55
1322
原创 6.gradle的依赖管理和版本决议
以下拷贝自https://docs.gradle.org/current/userguide/single_versions.html#version_ordering。配置仓库地址如上,仓库地址可以是’https://jitpack.io’ 这类远程仓库,也可以是发布到本地的本地仓库(一个路径)我们先在app>build.gradle里面依赖一个最新的正式版4.10.0,同时再依赖一个老版本4.9.3。maven遵循着这样一个协议来保证唯一性,也就是。第三条是我们自己经过试验得出的结论,
2024-02-06 11:31:28
1738
原创 5.gradle配置和project
在这里,我们指定Gradle构建脚本自身使用的插件版本,例如安卓Gradle插件,它负责处理安卓项目的编译、打包、签名等一系列构建任务。Flavor可以用来创建项目的多个变种,比如开发版、测试版和正式版等,每个变种可以有不同的包名、资源文件、依赖库等。是对一个独立构建单位的抽象表示,它可以是一个完整的应用程序,也可以是一个库模块,甚至是其他任何需要构建的对象。此处列举了不同类型的依赖,如运行时依赖(implementation)、测试依赖等,用于引入项目所需的库。,有自己的构建脚本。
2024-02-06 11:30:27
1250
原创 4.gradlew机制和原理
网上已经有很多人对以上各个阶段具体执行的源码进行了分析,有兴趣可以自行搜索查看。这篇文章简单了解一下为什么一行命令就能让项目运行起来或者打包出apk。gradle利用下面这个枚举描述了gradle的构建的状态。还记得上一篇我们说gradle构建生命周期分为三个阶段。GradleWrapperMain的main方法如下。可以看到和源码基本对应,大致就是。
2024-02-06 11:18:30
1829
原创 3.gradle生命周期
"在配置阶段完成后执行,"project beforeEvaluate"没有打印是因为beforeEvaluate发生在配置之前,初始化阶段之后,由于我们的命令并不会执行初始化所以没有打印。当一个新的任务被创建并添加到当前项目时,这个钩子就会被执行,并且执行在project afterEvaluate之前,可见也是在配置阶段。通过这些钩子,我们可以动态修改配置、改变任务行为或者添加新的功能,以适应项目的特性和需求。发生在执行阶段,它们允许你在任务执行之前或之后添加自定义的操作步骤。
2024-02-06 11:17:42
941
原创 1.Gradle入门与基本配置
在Android开发的世界里,Gradle是构建和自动化项目生命周期的核心工具。它不仅简化了项目的配置、依赖管理及构建过程,而且极大地提高了开发效率与协作体验。Gradle是一个开源的构建自动化系统,基于Groovy或Kotlin DSL(领域特定语言),并采用灵活的插件化架构设计。对于Android开发而言,Google为其定制了一套专门的Android Gradle插件,就是我们常听说的AGP,使得我们可以方便地进行模块化开发、多版本构建、资源混淆等一系列操作。
2024-02-05 17:47:04
1189
原创 从几个面试题来深入了解Handler机制
Handler机制是面试官非常喜欢问的知识点,有关Handler的面试题也是五花八门,举几个例子: Looper的loop()方法中死循环为什么不会造成ANR?死循环会造成cpu资源浪费吗?一个线程中Handler、Looper、MessageQueue的数量?它们的数量源码中怎么实现的?MessageQueue的数据结构是什么样子?为何主线程可以使用 Handler?如果想要在子线程中使用 Handler 要做些什么?这些题目从各个角度考察对handler源码的理解。只有对Handler的源码深入理解,才
2020-06-28 16:48:58
414
原创 面试关于jvm、dvm和art虚拟机区别
一、Dalvik与JVM的区别1、首先最主要的区别,Dalvik 基于寄存器,而 JVM 基于栈。那么什么是基于寄存器什么是基于栈呢?有关寄存器可以参照百度百科的内容,下面是一段摘抄:寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑...
2019-09-23 17:43:24
521
原创 从源码角度分析安卓事件分发机制
从百度上找了一张安卓事件分发U型图,下面从源码角度来分析这张图当一个点击事件发生时,事件最先传到Activity的dispatchTouchEvent()进行事件分发//public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACT...
2019-05-28 22:20:32
193
1
原创 ArcGIS卸载较新版本后无法安装较旧版本
最近使用腾讯电脑管家卸载了ArcGIS10.3.1 之后,在安装10.3的时候总是提示有更新的版本,卸载之后再进行安装。从网上搜索解决办法,都是说要删注册表,但是,注册表这么多根本删不完。网上还有人说,遇到这种版本冲突最快的解决办法是重装系统。。。 纠结了2、3天之后,终于解决了问题。我又重新装了一遍ArcGIS10.3.1,
2016-11-23 20:21:10
5989
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人