- 博客(71)
- 收藏
- 关注
原创 Unresolved reference: kotlinx 和 Unresolved reference:xxx
是因为用于使用 Gradle 构建的 Kotlin 版本与 IDE 插件中的版本不一样的原因。这个报错是因为build.gradle中忘记apply plugin了。点击install - apply。同步以后再次编译发现报错。
2024-02-14 14:11:36
1712
1
原创 LayoutInflater.inflate全面解读
LayoutInflater.inflate() 是 Android 系统中用于将 XML 布局文件转换成相应的 View 的方法。在 Android 开发中,我们经常使用此方法来动态创建和填充布局。参数含义:int resource: 这是要加载的 XML 布局资源 ID;ViewGroup root: 可选的 ViewGroup 参数,它作为新创建View的父容器。如果提供了父容器,inflate 过程会考虑父容器的 LayoutParams,并可能根据需要调整新创建视图的属性;
2024-01-27 09:58:55
1539
原创 scoped属性和深度选择器
如果第三方组件允许添加自定义类名,可以在使用该组件时为其添加额外的类名-- Vue 组件模板 --> < template > < third-party-component class = " custom-class " /> < style > .custom-class {
2024-01-26 17:08:57
1103
1
原创 【设计模式】设计模式六大原则
单一职责原则一个类只负责一项职责难点这个“单一”是怎么界定的,每个人都有自己的看法,需要根据个人经验一级具体的业务逻辑来确定但是,其基本的指导原则是:两个完全不同的功能就不应该出现在同一个类中,一个类中应该是一组相关性很高的函数、数据的封装里氏替换原则所有引用基类的地方必须能透明的使用其子类对象难点如何建立抽象里氏替换的核心原理是抽象,将公共的行为进行抽象,不同子类实现不同的行为优点提高代码复用性,提高代码可扩展性缺点由于抽象依赖于继承这个特性,所以缺点是有侵入性,代码冗余,灵活性
2022-01-11 22:53:58
337
原创 【gradle】1.groovy安装和配置
下载Groovy地址:http://groovy-lang.org/download.html下载后解压。配置环境变量open .bash_profileexport PATH=$PATH:/Users/wh-js/dev/groovy-3.0.7/bin让这个配置文件在修改后立即生效。source .bash_profile查看是否配置成功执行 groovy -version如果配置成功,显示如下:Groovy Version: 3.0.7 JVM: 1.8.0_241 Vendor
2021-12-22 15:13:37
843
原创 使用Vant Weapp,发现Dialog的确认按钮不能正确显示的问题
问题先上效果一个确认按钮的弹窗,发现确认按钮跑偏两个按钮的弹窗,发现取消按钮占的位置太大,确认按钮超出dialog弹出框一开始以为是最新的库版本有问题,app.json中"style": "v2"的原因查看issues和官方文档 发现是这个库还未兼容v2关于style:v2的介绍微信客户端 7.0 开始,UI 界面进行了大改版。小程序也进行了基础组件的样式升级。app.json 中配置 “style”: "v2"可表明启用新版的组件样式。本次改动涉及的组件有 button icon
2021-12-22 14:58:53
1807
原创 Android中与Activity相关的知识扫盲和备忘
什么是Task、几种启动Activity的方式、各生命周期的区别和联系、横竖屏切换生命周期、启动模式以及应用场景、什么是Affinity、定义启动模式的方法和区别、Activity回收和数据恢复、onSaveInstanceState和onRestoreInstanceState调用时机 、intent-filter、Activity的进程优先级
2021-05-12 10:17:27
369
原创 ‘sed‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
在使用adb命令查看task和Activity的时候,发现报错“‘sed’ 不是内部或外部命令,也不是可运行的程序 或批处理文件”看样子是没有配置sed的环境变量,或者没有sed工具从网上找了一下,说这个命令是Linux系统上的,而且如果安装了Git是自带这个工具的,自己找了一下,确实在下面的目录下找到了sed.exeC:\Program Files\Git\usr\bin然后配置一下环境变量,重启命令行就ok了...
2021-05-12 10:14:11
4466
原创 使用ThreadPoolExecutor实现控制一个方法的并发量,实现同时只能有10个线程进入方法
线程池是什么线程池是一种基于池化思想管理线程的工具,设计它的核心目的是解决资源管理问题,可以降低资源消耗、提高响应速度以及提高线程的可管理性。ThreadPoolExecutorThreadPoolExecutor是Executor最下层的实现类参数1:corePoolSize:核心池大小参数2:maximumPoolSize 线程池中允许的最大线程数参数3:keepAliveTime 线程空闲时的存活时间,即当线程没有任务执行时,继续存活的时间,默认情况下,该参数只在线程数大.
2021-03-15 08:00:09
1683
7
原创 【微信小程序】引入模块(require、import)和返回模块(module.exports、export)
require、import与module.exports、export的使用方式
2021-02-18 15:32:59
5437
原创 【微信小程序】this指代与es6箭头函数处理 Cannot read property ‘data‘ of undefined
this指代let that = this和箭头函数()=>{}处理this作用域问题
2021-02-18 10:06:58
812
原创 【微信小程序】利用WXS在WXML中使用toFixed方法
WXS(WeiXin Script)是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构
2021-02-17 16:22:53
2268
原创 【微信小程序】通过三元表达式给view动态设置class
<button class="check-button {{btnDesc == '已核销' ? 'checked-color' : 'uncheck-color'}}" catchtap="payClick" hidden="{{payBtnHidden}}">{{btnDesc}}</button>其中checked-color是“已核销”的按钮样式,uncheck-color是“核销”的按钮样式...
2021-02-17 15:17:41
1604
原创 【微信小程序】使用splice方法删除数组中的某一个元素
项目中遇到删除列表中某一个item的需求,当使用splice的时候,理解有问题。let item = that.data.items.splice(0, 1)这里返回的item是被删除的那一条,不是删除后剩下
2021-02-06 15:03:19
5213
1
原创 【微信小程序】商品详情页HTML标签解析库 wxParse与mp-html
上找了两个库,一个4年没更新有着7.5k Start的老库[wxParse]另外一个是1.4k Start的库[mp-html]
2021-01-29 15:45:42
1163
原创 【微信小程序】解决 设置position:fixed后遮挡内容、内容显示不全
通过padding巧妙解决position:fixed遮挡内容造成的内容显示不全问题
2021-01-24 18:07:14
6028
原创 Some selectors are not allowed in component wxss, including tag name selectors, ID selectors,and...
我出现这个问题的原因是在组件的样式中使用了button { }这个异常的原因是解决方法在组件的Component中添加 options: { addGlobalClass: true, },然后将组件中出现问题的样式剪切到使用该组件的page的样式中,我出现问题的样式是button { }警告就解除了。设置addGlobalClass: true 或者apply-shared 表示页面 wxss 样式将影响到自定义组件,但自定义组件 wxss 中指定的样式不会影响页面.
2021-01-17 23:56:10
5453
原创 梳理Binder原理之ServiceManager的注册流程(启动流程)AndroidP
ServiceManager是什么、ServiceManager启动流程、ServiceManager核心工作
2021-01-11 23:04:08
1166
原创 梳理Zygote进程-AndroidP(9.0)版本
Zygote简介Zygote翻译为受精卵,主要用于孵化子进程。所有的应用程序进程以及System Server进程都由Zygote进程通过fork函数孵化出来。Zygote进程的触发在init.rc与init.zygoteXX.rc中触发,可以查看梳理init进程文章。Zygote进程的启动过程main函数中传入的参数argv是-Xzygote /system/bin --zygote --start-system-server接着进行字符串比较如果是zygote服务zygote = t
2021-01-03 10:54:33
468
2
原创 梳理init进程-AndroidP(9.0)版本
其中init进程是Linux系统中用户态的第一个进程查看Init.cpp代码初始化属性服务解析init.rcLoadBootScripts方法中根据service、on、import创建不同类型的Parser,然后解析init.rcParseConfig最后调用到ParseData当解析完init.rc后,会调用end_section(),把解析出的service放入一个Vector结构的列表 service_listServiceListZygote进程启动 —init.r
2020-12-27 20:47:00
344
原创 梳理一下Android 系统启动流程
Android系统是一款基于Linux的开源系统,系统的架构划分为:系统应用层、Java API Framework层、native C/C++库和Android 运行时、硬件抽象层、和Linux内核层。各层级之间的衔接关系可以通过梳理进程
2020-12-20 21:43:25
270
原创 AndroidStudio 报错 CMake ‘3.10.2‘ was not found in PATH or by cmake.dir property.
编译代码后报错CMake ‘3.10.2’ was not found in PATH or by cmake.dir property.解决方法:File-Setting 找到Android SDK 打开SDKTools选项卡,下载CMake
2020-12-11 15:35:13
5988
3
原创 文字绘制
文字绘制调用Canvas的drawText方法先上源码 /** * Draw the text, with origin at (x,y), using the specified paint. The origin is interpreted * based on the Align setting in the paint. * * @param text The text to be drawn * @param x The x-coord
2020-10-24 09:46:33
173
原创 依赖倒置、控制反转、依赖注入、面向接口编程的理解
我的另一篇文章 :《以面向对象的角度分析抽象类和接口》依赖倒置依赖倒置原则(Dependence Inversion Principle,DIP)是指设计代码结构时,高层模块不应该依赖低层模块,二者都应该依赖其抽象。通过依赖倒置,可以减少类与类之间的耦合性,提高系统的稳定性,提高代码的可读性和可维护性,并且能够降低修改程序所造成的风险。比如,我们有一个TeaRoom类(茶室),有drinkBlackTea 喝红茶与drinkGreenTea 喝绿茶两个方法,来模拟去茶室喝茶代码如下(完整例子放在g
2020-07-30 17:04:07
944
原创 浅析Java中创建对象的过程
前言当Java程序中使用new 创建对象时,类加载机制会检查这个类是否被加载过(类加载机制可以看一下另一篇文章《Android中ClassLoader双亲委托机制》),如果没被加载过会执行对象的创建过程,流程图如下类加载一个Java程序,会通过javac编译成class文件,然后通过虚拟机加载到方法区检查加载检查 new 这个指令的参数是否能在常量池中定位到一个类的 符号引用,并检查类是否已经被加载、解析和初始化过。分配内存JVM为对象分配内存。相当于把一块确定大小的内存从堆中划分出来。分配
2020-07-30 17:03:32
213
原创 一个你读框架源码之前必须要理解的技术点,泛型(二)
上一篇介绍了一下各种定义,包括什么是泛型、泛型的优点、泛型擦除、泛型类、泛型接口、泛型方法、泛型通配符以及泛型上下边界,这一篇主要是上一篇的延续和补充限定类型变量在上一篇中,我们知道在使用泛型的时候,可以通过extends 限制泛型实参的上边界,除了限制上边界,我们还可以对泛型的类型变量加以约束,看下例子:class ExampleClass8{ //计算最小值 public <T extends Comparable> T min(T paramA, T paramB){
2020-07-30 17:01:39
200
原创 记一下Java中基本数据类型所占大小以及bit、Byte和KB的联系
基本数据类型有8种:byte、short、int、long、float、double、boolean、char整数型:byte、short、int、long浮点型:float、double布尔型:boolean字符型:charbyte:1byte = 8bitshort:2byteint:4bytelong:8bytefloat:4bytedouble:8byteboolean:1bytechar:2byte计算机中数据用0或1来表示,0或1占1位(1bit),bit 也是计算机存
2020-07-30 16:31:53
383
原创 数据结构篇 --- 线性表数据结构,数组
数组数组(Array)是一种线性表数据结构,用连续的内存空间,存储相同类型的数据线性表线性表(Linear List)数据是线性排列的,每个线性表中的数据最多只有一个头和一个尾(或者一个前一个后),线性表数据结构包括:数组、队列、栈、链表等非线性表非线性表中,数据之间并不是前后关系,一个数据可能跟多个数据有关系,非线性表包括 二叉树、堆、图等。连续的内存空间如图所示,系统给数组分配了一个连续的内存空间,即数组各个内元素的存地址也是连续的当我们需要访问到数组的某个位置的元素时,可以根据首地址与
2020-07-30 16:29:08
704
原创 通过一张图理解 scrollBy()与scrollTo()的区别
通过字面意思,scrollTo是指移动到某一位置,scrollBy该怎么理解呢?先看一下两者的源码scrollTo:scrollBy:根据源码的实现,参数x是水平移动的位置,y是垂直方向移动的位置scrollBy调用了scrollTo方法;scrollBy是在上一次移动的位置的(mScrollX和mScrollY)基础上进行逸动的;scrollTo是直接移动到(x,y)的位置需要注意的是,scrollTo和scrollBy都是移动的内容,而不是将View做整体的移动,对于一个TextVi
2020-07-30 16:28:03
2303
原创 垃圾回收器如何判断对象的“存活”,以及类何时回收
前言在垃圾回收器回收堆里面的对象的时候,需要判断对象是否还被其它地方使用,此时的状态我们可以比作对象是“存活”的,如果对象没有被其它地方使用,就回被垃圾回收器回收。如何判断对象是否是“存活”的呢?有两个方法:引用计数法和可达性分析...
2020-07-30 14:51:14
336
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人