自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android基础知识点整理和总结(目录)

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

2020-04-11 00:07:37 3926

原创 Java基础知识点整理和总结(目录)

前言参考材料:整理顺序极大程度的参考了这篇文章的内容。写给Android开发者的一份Java学习宝典_编程语言是方式,而思维是创造。-CSDN博客https://blog.csdn.net/ClAndEllen/article/details/827549311. 基础知识点Java常识(JDK,JAVA SE,JAVA版本,跨平台原理)https://blog.csdn.net/q...

2020-01-16 15:42:30 254

原创 Android View滑动冲突解决方案

本文需要读者对View事件分发的流程有基本的了解,如果还未完全理解事件分发流程的,需要先学习相关部分内容,这部分可以参考我的上一个博客:Android View点击事件分发原理,源码解读前提:现在来说我们如果是使用Google官方的View嵌套,比如ViewPager2,ScrollView,RecyclerView等滑动视图的话,哪怕你出现了两个滑动视图嵌套的情况,一般来说也不会出现滑动冲突的场景,因为Google官方经过多年的迭代之后,对于自带的这些视图常用场景的处理都已经很完善了。

2024-07-04 10:10:03 731

原创 Android View点击事件分发原理,源码解读

两年前我曾经写过一篇点击事件的原理博客,在今年重新翻看的时候发现文章的结构不好,且没有总结,让人不容易理解,所以重新整理了一下再写一次。注意:正文中虽然说的都是点击事件,实际上他并不是指我们常用语境中的onClick或者onLongClick,而是任意类型的事件,只是用点击事件来形容比较让人容易理解,实际上视图的事件分发是包括按下,抬起,移动这三个部分的。按下View(所有事件的开始)抬起View(与DOWN对应)移动View结束事件(非人为原因)

2024-06-23 15:29:12 967

原创 Android ViewModel实现和原理

提供者Provider:在我们这里就是数据的提供者,当实体的数据改变的时候,会自动通知所有观察者,观察者收到通知后就可以做对应的数据。观察者Observer:观察者注册提供程序,当提供者每次发送通知的时候,观察者就会做对应的处理。其最终实现出来的效果就是,在代码中,一旦我们注册的实体对象里面的数据改变之后,对应的UI就会自动的进行更新,这样数据更新的代码我们只需要在观察者里面写一套,不需要反复写多套了。提供者和观察者是一对多的关系,也就是一个提供者可以被很多个观察者注册。

2024-06-15 15:50:49 1370

原创 AMS(ActivityManagerService)源码解析2,Android应用是如何被启动的

基于源码API 28,30以后的版本启动第一个Activity的逻辑不一样我会只拿出我们需要关注的代码部分,因为源码太多全都看看不过来的。所以每次截代码都有省略前言源码只截取需要看的部分,其他部分会省略。源码基于API 28也就是Android9.0,也就是源码还有ActivityStackSupervisor的这个版本其他版本代码不太一样没有ActivityStackSupervisor,但是原理是相同的。用户点击应用图标(或者其他方式打开app)

2024-06-13 17:36:55 918

原创 AMS(ActivityManagerService)源码解析,Activity是如何被打开的

文章目录

2024-06-13 16:13:49 798

原创 Flutter的Dart语法入门

每个语言都有控制流语句就不写测试代码了。Win11代码测试方式:你要把电脑中的flutter和dart环境都安装上,然后在Android Studio中新建一个Dart项目或Flutter项目即可测试新建一个dart文件,void main就可以在编译器运行。

2024-06-03 16:06:40 1068 1

原创 Win11环境下Android Studio中Flutter开发环境构建(逐步解决)

Windows平台中flutter开发环境搭建

2024-06-01 18:37:46 1020

原创 Android Studio中xml预览不显示问题解决办法

具体表现:Android Studio的XML中可以看到视图的相对位置结构,但是看不到具体的模样,全黑,等于半摸黑调UI(由于我已经修好了所以没有截图)。不是所有的项目都会这样,一部分项目是正常的。或许有效的解决办法:修复layout内的问题。然后重新刷新Layout修改预览的背景或API版本。更新升级Android Studio(排除IDE的影响)清除Gradle缓存,重新下载,也就是把.gradle这个文件夹都删了重新下载一次。(排除缓存的影响)File->Invalid

2024-05-29 16:52:20 680

原创 鸿蒙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 2480

原创 鸿蒙Harmony常用容器组件介绍

本文不介绍Text,Image这种单独的视图控件,主要还是过一下在构成一个复杂页面时所需要的外层的容器组件。免得在实际开发的时候要构建外层组件时不知道要用什么比较好本文虽然也会贴一些测试代码,但是参考还是以鸿蒙的API参考为主,最好在上手这些视图的同时,学习如何看API参考:打开DevEco Studio -> View(视图) -> Tool Windows(工具窗口) -> API reference(API参考) -> ArkTs组件 -> 容器组件。

2024-01-21 21:07:17 1657

原创 鸿蒙系统ArkTs语法入门

每个语言都有控制流语句就不写测试代码了。arkTs绝大部分语法继承自ts,然后有些许的语法特性变化,这部分我也会在入门的时候一并记上。我之前学过java,所以这不是零基础,至少需要会一种编程语言。新建一个鸿蒙App项目,然后开一个设置按钮进行测试没有条件的话,可以在线测试编程代码。在TypeScript中所有的类型都可以被赋值为空类型null,赋值为空类型时可以和其他同类型对象进行运算,但是无法调用这个对象内部本身的方法,会报空指针异常。

2024-01-14 14:33:31 2343

原创 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 2536 4

原创 Android文件存储常用Api和对应存储位置

注:测试时的Android版本是12,如果实际地址不同可以用下面的测试代码自行重新看一遍。防止经常要用的时候记不住在哪个文件夹,要再去一一百度很麻烦,一次性测完了整理放在这里。

2023-07-03 14:18:27 581

原创 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 1256 1

原创 Android WebView和H5交互总结

本文附带了一点H5和JS的内容,所以需要有基本的JS知识。学习JS基本知识可以看菜鸟教程。我自己也看过总结了一下知识点我会写一个简单的demo,且demo不需要联网全程本地操作,在文章末尾贴上所有代码。

2023-02-07 11:21:30 2484

原创 JavaScript知识入门

身为一个Android开发,不会一点H5的基本知识和前端沟通的时候成本就比较高,而且要测试一些JS能力的时候也比较麻烦,所以学习一下JS的一些基本的语法和知识。正文基本上都是网页代码,直接让代码自己解释他的语法特性比讲概念方便一点,需要掌握一种编程语言的人才看的下去。测试方式1:新建一个html类型的文件,用文本文档的方式打开之后,将代码贴进去,然后用浏览器打开,将代码复制到这个网站使用,可以直接测试。

2023-02-06 17:41:02 513

原创 Android中WebView使用LoadUrl不刷新网页的问题,网址带#只能通过reload刷新

Android中WebView使用LoadUrl不刷新网页的问题,网址带#只能通过reload刷新

2023-01-12 21:13:31 3283

原创 Android 设置黑白滤镜

黑白滤镜

2023-01-09 17:36:36 341

原创 Android获取用户ip地址

获取ip地址

2022-08-18 17:15:06 1819

原创 Zygote进程原理简单介绍,源码解析

Zygote功能和Java部分主要方法源码解读

2022-06-12 17:22:48 1309

原创 RecyclerView缓存复用解析,源码解读

缓存回收复用的原理1.1 为什么要有四级缓存,每一级缓存的作用一级缓存二级缓存三级缓存四级缓存1.2 四级缓存是如何工作的2. 源码时序图和解读2.1 缓存回收LinearLayoutManagerRecyclerView2.2 缓存复用LinearLayoutManagerRecyclerView关于mChangedScrap2.3 回收池结构时序图代码参考材料............

2022-06-07 21:12:48 703

原创 Android为什么用RecyclerView而不用ListView

1

2022-06-01 12:13:54 374

原创 工作一年,做一下经验总结

文章目录前言正文1. 接口/请求2. 沟通前言最近一年工作,见识到了非常多的新东西,也学到了很多开发时要注意的要点,之前一直很忙没有时间总结,趁现在难得有空把这个东西重新记一下。正文1. 接口/请求对于一个大项目来说,接口实在是一个,特别令人头疼而又马虎不得的东西,特别是对于规模比较大的项目来说更是如此,每次涉及到接口相关的需求都需要做非常多相关的内容确认。某个接口升级到新版本,一定要考虑旧版本升级的影响,比如说某个接口原先有3个字段,且缓存到本地,更新后有5个字段,那么在开发的时候,就

2022-05-31 21:50:05 158

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

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

原创 用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 4963

原创 用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 2567

原创 小米手机刷机和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 12279 3

原创 Javadoc写法和标签总结

文章目录1. Javadoc1.1 类标签1.2 方法标签1.3 其他标签2. HTML标签参考材料1. Javadoc先说一下如何用javadoc的注释,在方法的上面输入/**然后在敲下回车,就会自动生成一个javadoc格式的文档,然后就可以填内容了。那么javadoc写法的注释和我们平时用的双斜杠//的注释有什么区别呢?最主要的区别就是javadoc的注释可以在我们鼠标放到方法名/类名/变量名上面的时候,直接看到其内容,而双斜杠的注释不行。所以按照一般来说,我们会在类/变量/方法的

2021-07-17 16:13:20 2727 1

原创 Android Studio 鼠标停在代码上显示的注释闪一下就消失,Quick doc闪一下就消失

点击File -> invalidate Caches / Restart…待AndroidStudio重启之后,就不会闪了如果还会闪的话,那就只能用ctrl+q手动显示注释了

2021-06-10 13:39:43 313

原创 kotlin的匿名函数知识点总结

文章目录参考材料1. 匿名函数2.3.参考材料1. 匿名函数2.3.

2021-06-05 16:05:28 2052 1

原创 Android控件轮播效果的延迟启动和内存泄漏

你好

2021-05-31 20:50:27 298 4

原创 Android用ViewAnimator写一个简单的控件轮播效果

控件轮播前言1. ViewAnimator2. CountDownTimer3. 切换动画4. 优化参考材料前言因为项目的需求,需要实现一个文字滚动轮播的功能,图我暂时找不到,脑补一下就是文字会往上滚动,然后显示另一段文字。且有多段这样的文字需要按顺序播放的这样。Android内部自带一个ViewAnimator控件,可以实现这种控件切换的功能。1. ViewAnimator<ViewAnimator android:id="@+id/va" android:layout_w

2021-05-20 20:09:48 1234 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 386

原创 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 7391 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 729

原创 Git远程分支操作记录

文章目录1. 本地仓库和远程仓库2. 分支2.1 获取分支上的代码2.2 新建一个工作用的分支2.3 开发2.4 检查代码改动1. 本地仓库和远程仓库在Git中,仓库分为本地仓库和远程仓库,其中,本地仓库在你的计算机中,远程仓库在网络上。项目中的.git文件夹就是你的本地仓库。当一个项目需要多个人共同开发的时候,git的实用性就会比svn更高一些。他可以多个人通过不同的分支共同维护一个项目。当我们需要使用远程仓库的时候,需要先将远程仓库的地址加入到git中。#remote是远程仓库相关指令 a

2021-05-06 15:59:55 577

原创 Android UI性能优化原理

UI性能优化原理1. UI加载和卡顿原理1.1 XML加载到屏幕的流程1.2 FPS和卡顿原理1.3 16ms内都做了些什么2. 过渡绘制2.1 如何查看过渡绘制3. UI如何优化3.1 CPU减少计算3.2 GPU减少绘制3.3 冲突4. 内存抖动与UI卡顿的关系参考材料1. UI加载和卡顿原理1.1 XML加载到屏幕的流程我们写完XML文件我们在Activity中调用setContentView()方法,本质上是调用内部phoneWindow中DecorView的LyaoutInflater.

2021-03-13 06:32:47 298

sortDemo.java

排序算法知识点总结和Java实现 2. 排序算法 2.1 选择排序 2.2 冒泡排序 2.3 插入排序 2.4 希尔排序 2.5 归并排序 2.6 快速排序 2.7 堆排序 2.8 计数排序 2.9 桶排序 2.10 基数排序

2020-04-10

空空如也

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

TA关注的人

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