- 博客(119)
- 资源 (1)
- 收藏
- 关注

原创 Android基础知识点整理和总结(目录)
Android基础知识点整理前言1. 基础知识点前言参考材料:整理顺序极大程度的参考了这篇文章的内容。Android知识体系总结2020(全方面覆盖Android知识结构,面试&进阶)_移动开发_编程语言是方式,而思维是创造。-优快云博客https://blog.youkuaiyun.com/ClAndEllen/article/details/792576631. 基础知识点四大组件...
2020-04-11 00:07:37
5196

原创 Java基础知识点整理和总结(目录)
前言参考材料:整理顺序极大程度的参考了这篇文章的内容。写给Android开发者的一份Java学习宝典_编程语言是方式,而思维是创造。-优快云博客https://blog.youkuaiyun.com/ClAndEllen/article/details/827549311. 基础知识点Java常识(JDK,JAVA SE,JAVA版本,跨平台原理)https://blog.youkuaiyun.com/q...
2020-01-16 15:42:30
284
原创 Android View滑动冲突解决方案
本文需要读者对View事件分发的流程有基本的了解,如果还未完全理解事件分发流程的,需要先学习相关部分内容,这部分可以参考我的上一个博客:Android View点击事件分发原理,源码解读前提:现在来说我们如果是使用Google官方的View嵌套,比如ViewPager2,ScrollView,RecyclerView等滑动视图的话,哪怕你出现了两个滑动视图嵌套的情况,一般来说也不会出现滑动冲突的场景,因为Google官方经过多年的迭代之后,对于自带的这些视图常用场景的处理都已经很完善了。
2024-07-04 10:10:03
988
原创 Android View点击事件分发原理,源码解读
两年前我曾经写过一篇点击事件的原理博客,在今年重新翻看的时候发现文章的结构不好,且没有总结,让人不容易理解,所以重新整理了一下再写一次。注意:正文中虽然说的都是点击事件,实际上他并不是指我们常用语境中的onClick或者onLongClick,而是任意类型的事件,只是用点击事件来形容比较让人容易理解,实际上视图的事件分发是包括按下,抬起,移动这三个部分的。按下View(所有事件的开始)抬起View(与DOWN对应)移动View结束事件(非人为原因)
2024-06-23 15:29:12
1216
1
原创 Android ViewModel实现和原理
提供者Provider:在我们这里就是数据的提供者,当实体的数据改变的时候,会自动通知所有观察者,观察者收到通知后就可以做对应的数据。观察者Observer:观察者注册提供程序,当提供者每次发送通知的时候,观察者就会做对应的处理。其最终实现出来的效果就是,在代码中,一旦我们注册的实体对象里面的数据改变之后,对应的UI就会自动的进行更新,这样数据更新的代码我们只需要在观察者里面写一套,不需要反复写多套了。提供者和观察者是一对多的关系,也就是一个提供者可以被很多个观察者注册。
2024-06-15 15:50:49
1712
原创 AMS(ActivityManagerService)源码解析2,Android应用是如何被启动的
基于源码API 28,30以后的版本启动第一个Activity的逻辑不一样我会只拿出我们需要关注的代码部分,因为源码太多全都看看不过来的。所以每次截代码都有省略前言源码只截取需要看的部分,其他部分会省略。源码基于API 28也就是Android9.0,也就是源码还有ActivityStackSupervisor的这个版本其他版本代码不太一样没有ActivityStackSupervisor,但是原理是相同的。用户点击应用图标(或者其他方式打开app)
2024-06-13 17:36:55
994
原创 Flutter的Dart语法入门
每个语言都有控制流语句就不写测试代码了。Win11代码测试方式:你要把电脑中的flutter和dart环境都安装上,然后在Android Studio中新建一个Dart项目或Flutter项目即可测试新建一个dart文件,void main就可以在编译器运行。
2024-06-03 16:06:40
1184
1
原创 Android Studio中xml预览不显示问题解决办法
具体表现:Android Studio的XML中可以看到视图的相对位置结构,但是看不到具体的模样,全黑,等于半摸黑调UI(由于我已经修好了所以没有截图)。不是所有的项目都会这样,一部分项目是正常的。或许有效的解决办法:修复layout内的问题。然后重新刷新Layout修改预览的背景或API版本。更新升级Android Studio(排除IDE的影响)清除Gradle缓存,重新下载,也就是把.gradle这个文件夹都删了重新下载一次。(排除缓存的影响)File->Invalid
2024-05-29 16:52:20
2452
1
原创 鸿蒙Harmony跨模块交互
鸿蒙系统的模块一共分为四种,包括HAP两种和共享包两种UIAbility类比就是Android四大组件中的Activity,而我们平时用的带@Entry标签的UI组件,可以理解为是Fragment或者说是View。和Android不同的是,在鸿蒙系统中,UIAbility并不会像Activity中那样频繁被创建,我们一般都通过UI组件来进行页面的切换和跳转。四种不同的包的区分方式,查看该module中的src/main/module.json5文件里面的type字段。
2024-03-25 23:16:31
4072
原创 鸿蒙Harmony常用容器组件介绍
本文不介绍Text,Image这种单独的视图控件,主要还是过一下在构成一个复杂页面时所需要的外层的容器组件。免得在实际开发的时候要构建外层组件时不知道要用什么比较好本文虽然也会贴一些测试代码,但是参考还是以鸿蒙的API参考为主,最好在上手这些视图的同时,学习如何看API参考:打开DevEco Studio -> View(视图) -> Tool Windows(工具窗口) -> API reference(API参考) -> ArkTs组件 -> 容器组件。
2024-01-21 21:07:17
2283
原创 鸿蒙系统ArkTs语法入门
每个语言都有控制流语句就不写测试代码了。arkTs绝大部分语法继承自ts,然后有些许的语法特性变化,这部分我也会在入门的时候一并记上。我之前学过java,所以这不是零基础,至少需要会一种编程语言。新建一个鸿蒙App项目,然后开一个设置按钮进行测试没有条件的话,可以在线测试编程代码。在TypeScript中所有的类型都可以被赋值为空类型null,赋值为空类型时可以和其他同类型对象进行运算,但是无法调用这个对象内部本身的方法,会报空指针异常。
2024-01-14 14:33:31
2906
1
原创 compile_and_runtime_not_namespaced_r_class_jar\debug\R.jar: 另一个程序正在使用
3. 打开任务管理器,左侧性能->右上角资源监视器,资源监视器上方窗口点击CPU,通过关联的句柄搜索所有占用compile_and_runtime_not_namespaced_r_class_jar的进程,将他们关闭。2. 关闭Android Studio,手动找到这个文件夹,删除该文件。如果在方法3你发现,占用该进程的,正好是Android Studio,那么你关闭他就会回到方法2,没有意义。想要clean Project,还是提示该文件被占用,这个文件和连带的文件夹都无法被删除。
2023-08-08 18:21:34
2899
4
原创 Android文件存储常用Api和对应存储位置
注:测试时的Android版本是12,如果实际地址不同可以用下面的测试代码自行重新看一遍。防止经常要用的时候记不住在哪个文件夹,要再去一一百度很麻烦,一次性测完了整理放在这里。
2023-07-03 14:18:27
789
原创 Android Studio 提示 Unable to load class ‘org.slf4j.LoggerFactory‘.
将distributionUrl改为https://services.gradle.org/distributions/gradle-7.5-bin.zip。路径gradle/wrapper/gradle-wrapper.properties。gradle的具体版本可以根据实际情况改一下。将项目切换成Project模式。
2023-04-12 17:26:40
1758
原创 Android WebView和H5交互总结
本文附带了一点H5和JS的内容,所以需要有基本的JS知识。学习JS基本知识可以看菜鸟教程。我自己也看过总结了一下知识点我会写一个简单的demo,且demo不需要联网全程本地操作,在文章末尾贴上所有代码。
2023-02-07 11:21:30
3044
原创 JavaScript知识入门
身为一个Android开发,不会一点H5的基本知识和前端沟通的时候成本就比较高,而且要测试一些JS能力的时候也比较麻烦,所以学习一下JS的一些基本的语法和知识。正文基本上都是网页代码,直接让代码自己解释他的语法特性比讲概念方便一点,需要掌握一种编程语言的人才看的下去。测试方式1:新建一个html类型的文件,用文本文档的方式打开之后,将代码贴进去,然后用浏览器打开,将代码复制到这个网站使用,可以直接测试。
2023-02-06 17:41:02
662
原创 Android中WebView使用LoadUrl不刷新网页的问题,网址带#只能通过reload刷新
Android中WebView使用LoadUrl不刷新网页的问题,网址带#只能通过reload刷新
2023-01-12 21:13:31
3868
原创 RecyclerView缓存复用解析,源码解读
缓存回收复用的原理1.1 为什么要有四级缓存,每一级缓存的作用一级缓存二级缓存三级缓存四级缓存1.2 四级缓存是如何工作的2. 源码时序图和解读2.1 缓存回收LinearLayoutManagerRecyclerView2.2 缓存复用LinearLayoutManagerRecyclerView关于mChangedScrap2.3 回收池结构时序图代码参考材料............
2022-06-07 21:12:48
917
原创 工作一年,做一下经验总结
文章目录前言正文1. 接口/请求2. 沟通前言最近一年工作,见识到了非常多的新东西,也学到了很多开发时要注意的要点,之前一直很忙没有时间总结,趁现在难得有空把这个东西重新记一下。正文1. 接口/请求对于一个大项目来说,接口实在是一个,特别令人头疼而又马虎不得的东西,特别是对于规模比较大的项目来说更是如此,每次涉及到接口相关的需求都需要做非常多相关的内容确认。某个接口升级到新版本,一定要考虑旧版本升级的影响,比如说某个接口原先有3个字段,且缓存到本地,更新后有5个字段,那么在开发的时候,就
2022-05-31 21:50:05
259
原创 PMS(PackageManagerService)原理简单介绍,启动过程源码简单解析
PMS(Package Manager Service):作用:定位不同APK中内部的某个组件(四大组件)启动时机:手机开机的时候,70%的时间都是在启动PMS,将手机里面所有APP的信息(其实就是AndroidManifest.xml),缓存到PMS内部的数据库里面,以便于后面要启动这些APP的时候,可以快速的定位并启动这些APP。将所有的APK的AndroidManifest.xml读取出来,并且通过PackageParser解析成不同的JavaBean。......
2022-05-29 01:45:03
2835
原创 Android反编译 jadx-gui基本用法
Android逆向基础工具使用前言1. jadx-gui1.1 APK过大时无法使用索引2. 传统三件套2.1 apktool2.2 dex2jar2.3 jd-gui参考材料前言现在我们反编译一个未加固的APP,一般来说有两种方式。一种是用Jadx-gui,优点是一个软件就帮你将所有活给干了,缺点是如果遇到较大的APP(代码加起来超过30mb的),这个软件的索引功能基本会失效,需要用Android Studio辅助。另一种就是传统的三件套,即Apktool + dex2jar + jd-gui,最
2022-03-15 13:49:58
24456
原创 用FridaDexDump反编译APP
文章目录准备1. 安装Python2. 安装Frida2.1 Could not find a version that satisfies the requirement frida (from versions: none)2.2 pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.2.3 ERROR: Exception: Traceback
2022-03-13 21:08:56
5314
原创 用DumpDex反编译App
文章目录事前准备1. 操作1.1 No variants found for 'app'. Check build files to ensure at least one variant exists.1.2 A problem occurred configuring project ':app'.1.3 签名1.4 报错1.5 libnativeDump.so not found1.6 /data/local/tmp/libnativeDump64.so" is 64-bit instead of 3
2022-03-13 21:05:18
2709
原创 小米手机刷机和Xposed安装流程
文章目录1. 小米手机解锁BootLoader1.1 备份手机数据1.2 小米解锁工具:当前未连接手机1.3 小米解锁工具:168小时限制2. 安装Magisk3. 安装edXposed参考材料1. 小米手机解锁BootLoader小米刷机助手http://zhushou.xiaomi.com/小米解锁工具https://www.miui.com/unlock/download.html开启开发者选项:设置 -> 我的设备 -> 全部参数 -> 连续点击五次MIUI版本。
2022-03-13 21:02:12
13170
3
原创 Javadoc写法和标签总结
文章目录1. Javadoc1.1 类标签1.2 方法标签1.3 其他标签2. HTML标签参考材料1. Javadoc先说一下如何用javadoc的注释,在方法的上面输入/**然后在敲下回车,就会自动生成一个javadoc格式的文档,然后就可以填内容了。那么javadoc写法的注释和我们平时用的双斜杠//的注释有什么区别呢?最主要的区别就是javadoc的注释可以在我们鼠标放到方法名/类名/变量名上面的时候,直接看到其内容,而双斜杠的注释不行。所以按照一般来说,我们会在类/变量/方法的
2021-07-17 16:13:20
3178
1
原创 Android Studio 鼠标停在代码上显示的注释闪一下就消失,Quick doc闪一下就消失
点击File -> invalidate Caches / Restart…待AndroidStudio重启之后,就不会闪了如果还会闪的话,那就只能用ctrl+q手动显示注释了
2021-06-10 13:39:43
371
原创 Android用ViewAnimator写一个简单的控件轮播效果
控件轮播前言1. ViewAnimator2. CountDownTimer3. 切换动画4. 优化参考材料前言因为项目的需求,需要实现一个文字滚动轮播的功能,图我暂时找不到,脑补一下就是文字会往上滚动,然后显示另一段文字。且有多段这样的文字需要按顺序播放的这样。Android内部自带一个ViewAnimator控件,可以实现这种控件切换的功能。1. ViewAnimator<ViewAnimator android:id="@+id/va" android:layout_w
2021-05-20 20:09:48
1427
4
原创 kotlin入门知识点总结(1) 常量,条件语句,String,方法,UNIT函数和NOTHING函数
文章目录1. 变量常量和类型1.1 类型推断1.2 编译时常量2. 条件语句2.1 if/else2.2 range2.3 when3. String4. 方法4.1 默认传参4. kotlin字节码参考材料1. 变量常量和类型kotlin中,变量的定义是这样var 变量名: 变量类型比如: var str: String ,就是声明了一个类型为String的变量strval表示这是一个不可变量,他的值在定义之后就不可改变val str: String = “hello world”str =
2021-05-06 17:01:13
534
原创 git显示文件有修改,但是实际上却没有修改(提示File mode changed from 100755 to 100644)
主要原因是因为文件的权限被修改了git config --global --add core.filemode false这样就会忽略掉filemode的变更,下次commit的时候就会忽略这一点了。但是这样做会带来一个问题,就是已经修改过的文件权限无法改回来了。而我在开发的过程中就因为需要将其改回来而花了很多时间。步骤如下:git config --global --add core.filemode true,先将其改回true找到目标文件的地址,这里我就用app/src/java/co
2021-05-06 16:52:00
8262
1
原创 Android Studio当项目规模很大的时候,刚来没多久如何进行开发
文章目录1. Layout Inspector2. 全局搜索3. find usage当你的项目规模很大,身为个人根本没有办法在短短几天之内熟悉项目的流程,又需要进行开发时,就需要这善用三个功能:Layout Inspector,全局搜索,find Usage1. Layout Inspector当你需要在某个页面,实现某个功能点,但是却因为项目太大,你连该页面对于的xml文件和java文件都找不到时,就需要用到这个功能了。先在Android Studio上运行项目,打开到你所需要修改功能的页面。
2021-05-06 16:24:42
873
sortDemo.java
2020-04-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人