自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 鸿蒙面试题基础知识

鸿蒙状态管理–组件级别的状态管理有哪些 @State、 @Prop、 @Link、 @Provide和@Consume、@ObjectLink和@Observed@State装饰的变量,或称为状态变量,一旦变量拥有了状态属性,就可以触发其直接绑定UI组件的刷新。当状态改变时,UI会发生对应的渲染改变。在状态变量相关装饰器中,@State是最基础的,使变量拥有状态属性的装饰器,它也是大部分状态变量的数据源。

2024-07-22 12:19:35 597

原创 2.Android系统类加载机制

Android系统采用的是双亲委托加载机制,即当一个ClassLoader试图加载一个类时,首先委托给其父类加载器尝试加载,若父加载器无法加载,则由当前加载器尝试加载。这对于插件化而言意味着,如果我们能够自定义类加载器,并让它成功加载插件内的类,就能够实现在运行时动态加载和执行插件代码。在实现插件化时,需要通过自定义ClassLoader读取并解析插件apk中的dex文件,然后将类加载到Java虚拟机(Dalvik或ART)中,使插件中的类可以被宿主应用正常调用和执行。

2024-04-08 23:52:31 222

原创 1.插件化概念和使用演示

安卓插件化,作为一种先进的应用架构技术,它打破了传统单体应用开发模式的壁垒,允许将一个完整的应用程序拆分成多个独立的功能模块——插件。每个插件作为一个独立的单元,可以包含用户界面组件、业务逻辑、资源文件以及其它必要组件,并且能够根据需求在运行时动态加载到主应用中。

2024-04-08 16:44:08 259

原创 7.gradle插件入门以及发布插件

其实并不是我们没有创建,而是我们使用的 java-gradle-plugin 插件会自动帮我们将上述的步骤实现,在build目录下可以查到,新建插件也只需要增加一个闭包即可,如test2Plugin,而不需要再创建一个properties文件,当然如果插件特别多,十几个或者几十个,会导致builid.gradle文件代码较多。下一篇我们进行一下gradle插件的实战,开发一个有用的gradle插件。在build.gradle写的一个插件,哈哈哈。可以看到我们依赖的三种方式创建的插件都打印了。

2024-02-06 11:47:55 1114

原创 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 1481

原创 5.gradle配置和project

在这里,我们指定Gradle构建脚本自身使用的插件版本,例如安卓Gradle插件,它负责处理安卓项目的编译、打包、签名等一系列构建任务。Flavor可以用来创建项目的多个变种,比如开发版、测试版和正式版等,每个变种可以有不同的包名、资源文件、依赖库等。是对一个独立构建单位的抽象表示,它可以是一个完整的应用程序,也可以是一个库模块,甚至是其他任何需要构建的对象。此处列举了不同类型的依赖,如运行时依赖(implementation)、测试依赖等,用于引入项目所需的库。,有自己的构建脚本。

2024-02-06 11:30:27 1008

原创 4.gradlew机制和原理

网上已经有很多人对以上各个阶段具体执行的源码进行了分析,有兴趣可以自行搜索查看。这篇文章简单了解一下为什么一行命令就能让项目运行起来或者打包出apk。gradle利用下面这个枚举描述了gradle的构建的状态。还记得上一篇我们说gradle构建生命周期分为三个阶段。GradleWrapperMain的main方法如下。可以看到和源码基本对应,大致就是。

2024-02-06 11:18:30 1100

原创 3.gradle生命周期

"在配置阶段完成后执行,"project beforeEvaluate"没有打印是因为beforeEvaluate发生在配置之前,初始化阶段之后,由于我们的命令并不会执行初始化所以没有打印。当一个新的任务被创建并添加到当前项目时,这个钩子就会被执行,并且执行在project afterEvaluate之前,可见也是在配置阶段。通过这些钩子,我们可以动态修改配置、改变任务行为或者添加新的功能,以适应项目的特性和需求。发生在执行阶段,它们允许你在任务执行之前或之后添加自定义的操作步骤。

2024-02-06 11:17:42 837

原创 2.groovy基础语法和DSL

在Groovy中,变量声明变得更为简单直接。你可以使用。

2024-02-05 17:48:14 604

原创 1.Gradle入门与基本配置

在Android开发的世界里,Gradle是构建和自动化项目生命周期的核心工具。它不仅简化了项目的配置、依赖管理及构建过程,而且极大地提高了开发效率与协作体验。Gradle是一个开源的构建自动化系统,基于Groovy或Kotlin DSL(领域特定语言),并采用灵活的插件化架构设计。对于Android开发而言,Google为其定制了一套专门的Android Gradle插件,就是我们常听说的AGP,使得我们可以方便地进行模块化开发、多版本构建、资源混淆等一系列操作。

2024-02-05 17:47:04 926

原创 从几个面试题来深入了解Handler机制

Handler机制是面试官非常喜欢问的知识点,有关Handler的面试题也是五花八门,举几个例子: Looper的loop()方法中死循环为什么不会造成ANR?死循环会造成cpu资源浪费吗?一个线程中Handler、Looper、MessageQueue的数量?它们的数量源码中怎么实现的?MessageQueue的数据结构是什么样子?为何主线程可以使用 Handler?如果想要在子线程中使用 Handler 要做些什么?这些题目从各个角度考察对handler源码的理解。只有对Handler的源码深入理解,才

2020-06-28 16:48:58 383

原创 面试关于jvm、dvm和art虚拟机区别

一、Dalvik与JVM的区别1、首先最主要的区别,Dalvik 基于寄存器,而 JVM 基于栈。那么什么是基于寄存器什么是基于栈呢?有关寄存器可以参照百度百科的内容,下面是一段摘抄:寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑...

2019-09-23 17:43:24 468

原创 从源码角度分析安卓事件分发机制

从百度上找了一张安卓事件分发U型图,下面从源码角度来分析这张图当一个点击事件发生时,事件最先传到Activity的dispatchTouchEvent()进行事件分发//public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACT...

2019-05-28 22:20:32 162 1

原创 ArcGIS卸载较新版本后无法安装较旧版本

最近使用腾讯电脑管家卸载了ArcGIS10.3.1 之后,在安装10.3的时候总是提示有更新的版本,卸载之后再进行安装。从网上搜索解决办法,都是说要删注册表,但是,注册表这么多根本删不完。网上还有人说,遇到这种版本冲突最快的解决办法是重装系统。。。  纠结了2、3天之后,终于解决了问题。我又重新装了一遍ArcGIS10.3.1,

2016-11-23 20:21:10 5597 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除