- 博客(109)
- 资源 (1)
- 收藏
- 关注
原创 Android基础知识点整理和总结(目录)
Android基础知识点整理前言1. 基础知识点前言参考材料:整理顺序极大程度的参考了这篇文章的内容。Android知识体系总结2020(全方面覆盖Android知识结构,面试&进阶)_移动开发_编程语言是方式,而思维是创造。-CSDN博客https://blog.csdn.net/ClAndEllen/article/details/792576631. 基础知识点四大组件...
2020-04-11 00:07:37 2922
原创 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 242
原创 鸿蒙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 1356
原创 鸿蒙Harmony常用容器组件介绍
本文不介绍Text,Image这种单独的视图控件,主要还是过一下在构成一个复杂页面时所需要的外层的容器组件。免得在实际开发的时候要构建外层组件时不知道要用什么比较好本文虽然也会贴一些测试代码,但是参考还是以鸿蒙的API参考为主,最好在上手这些视图的同时,学习如何看API参考:打开DevEco Studio -> View(视图) -> Tool Windows(工具窗口) -> API reference(API参考) -> ArkTs组件 -> 容器组件。
2024-01-21 21:07:17 1152
原创 鸿蒙系统ArkTs语法入门
每个语言都有控制流语句就不写测试代码了。arkTs绝大部分语法继承自ts,然后有些许的语法特性变化,这部分我也会在入门的时候一并记上。我之前学过java,所以这不是零基础,至少需要会一种编程语言。新建一个鸿蒙App项目,然后开一个设置按钮进行测试没有条件的话,可以在线测试编程代码。在TypeScript中所有的类型都可以被赋值为空类型null,赋值为空类型时可以和其他同类型对象进行运算,但是无法调用这个对象内部本身的方法,会报空指针异常。
2024-01-14 14:33:31 1192
原创 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 2141 4
原创 Android文件存储常用Api和对应存储位置
注:测试时的Android版本是12,如果实际地址不同可以用下面的测试代码自行重新看一遍。防止经常要用的时候记不住在哪个文件夹,要再去一一百度很麻烦,一次性测完了整理放在这里。
2023-07-03 14:18:27 494
原创 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 1098 1
原创 Android WebView和H5交互总结
本文附带了一点H5和JS的内容,所以需要有基本的JS知识。学习JS基本知识可以看菜鸟教程。我自己也看过总结了一下知识点我会写一个简单的demo,且demo不需要联网全程本地操作,在文章末尾贴上所有代码。
2023-02-07 11:21:30 2106
原创 JavaScript知识入门
身为一个Android开发,不会一点H5的基本知识和前端沟通的时候成本就比较高,而且要测试一些JS能力的时候也比较麻烦,所以学习一下JS的一些基本的语法和知识。正文基本上都是网页代码,直接让代码自己解释他的语法特性比讲概念方便一点,需要掌握一种编程语言的人才看的下去。测试方式1:新建一个html类型的文件,用文本文档的方式打开之后,将代码贴进去,然后用浏览器打开,将代码复制到这个网站使用,可以直接测试。
2023-02-06 17:41:02 424
原创 Android中WebView使用LoadUrl不刷新网页的问题,网址带#只能通过reload刷新
Android中WebView使用LoadUrl不刷新网页的问题,网址带#只能通过reload刷新
2023-01-12 21:13:31 2806
原创 RecyclerView缓存复用解析,源码解读
缓存回收复用的原理1.1 为什么要有四级缓存,每一级缓存的作用一级缓存二级缓存三级缓存四级缓存1.2 四级缓存是如何工作的2. 源码时序图和解读2.1 缓存回收LinearLayoutManagerRecyclerView2.2 缓存复用LinearLayoutManagerRecyclerView关于mChangedScrap2.3 回收池结构时序图代码参考材料............
2022-06-07 21:12:48 556
原创 工作一年,做一下经验总结
文章目录前言正文1. 接口/请求2. 沟通前言最近一年工作,见识到了非常多的新东西,也学到了很多开发时要注意的要点,之前一直很忙没有时间总结,趁现在难得有空把这个东西重新记一下。正文1. 接口/请求对于一个大项目来说,接口实在是一个,特别令人头疼而又马虎不得的东西,特别是对于规模比较大的项目来说更是如此,每次涉及到接口相关的需求都需要做非常多相关的内容确认。某个接口升级到新版本,一定要考虑旧版本升级的影响,比如说某个接口原先有3个字段,且缓存到本地,更新后有5个字段,那么在开发的时候,就
2022-05-31 21:50:05 110
原创 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 2392
原创 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 22956
原创 用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 4683
原创 用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 2440
原创 小米手机刷机和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 11677 3
原创 Javadoc写法和标签总结
文章目录1. Javadoc1.1 类标签1.2 方法标签1.3 其他标签2. HTML标签参考材料1. Javadoc先说一下如何用javadoc的注释,在方法的上面输入/**然后在敲下回车,就会自动生成一个javadoc格式的文档,然后就可以填内容了。那么javadoc写法的注释和我们平时用的双斜杠//的注释有什么区别呢?最主要的区别就是javadoc的注释可以在我们鼠标放到方法名/类名/变量名上面的时候,直接看到其内容,而双斜杠的注释不行。所以按照一般来说,我们会在类/变量/方法的
2021-07-17 16:13:20 2281 1
原创 Android Studio 鼠标停在代码上显示的注释闪一下就消失,Quick doc闪一下就消失
点击File -> invalidate Caches / Restart…待AndroidStudio重启之后,就不会闪了如果还会闪的话,那就只能用ctrl+q手动显示注释了
2021-06-10 13:39:43 291
原创 Android用ViewAnimator写一个简单的控件轮播效果
控件轮播前言1. ViewAnimator2. CountDownTimer3. 切换动画4. 优化参考材料前言因为项目的需求,需要实现一个文字滚动轮播的功能,图我暂时找不到,脑补一下就是文字会往上滚动,然后显示另一段文字。且有多段这样的文字需要按顺序播放的这样。Android内部自带一个ViewAnimator控件,可以实现这种控件切换的功能。1. ViewAnimator<ViewAnimator android:id="@+id/va" android:layout_w
2021-05-20 20:09:48 1123 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 285
原创 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 6897 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 605
原创 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 551
原创 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 253
原创 Android如何在运行时动态添加View
文章目录前言1. 动态添加TextView2. 动态添加layout3. 在layout中携带各种数据4. 动态删除view5.参考材料前言主要是使用ViewGroup类中的addView方法,就可以很方便的直接将view添加到ViewGroup中我们平时用的LinearLayout或者GridLayout等,都是ViewGroup的子类,所以也都有这个方法。准备一个button和一个linearlayout,只要点击一次button,就往linearlayout中添加一个view<Line
2021-03-12 16:23:07 874
原创 Android的View事件分发机制原理
L型链和U型链WindowManagerService是一个独立的进程,拥有自己的main方法。它的内部有一个各种各样的集合用于存放各种各样状态的ActivityWindowManagerService接收到屏幕的点击事件后,就会分发给其内部正在显示的activity,这个就是activity的点击事件被分发的基本原理。总之Acitivity的dispatchTouchEvent就是这样被调用的,而MotionEvent也是WindowManagerService生成的。dispatchTouch.
2021-03-12 16:00:59 518
原创 内存溢出与内存泄露知识点总结
内存溢出与内存泄露1. 内存溢出1.1 无限申请对象引起的堆内存溢出1.2 无限调用方法引起的栈内存溢出2. 内存泄露3. 内存抖动1. 内存溢出程序在申请内存时,没有足够的内存可以申请,于是程序报错OOM(Out of Memory)。JVM的内存空间,用的比较多的部分就是堆内存和栈内存,所以内存溢出也分为堆内存溢出和栈内存溢出的情况。1.1 无限申请对象引起的堆内存溢出ArrayList list = new ArrayList();while(true){ list.add(new Ob
2021-02-19 15:41:22 113
原创 Android Studio 4.0 提示No debuggable processes
主要原因是Android app运行时不是debug版本点击Android Studio左下角的build variants。将active build variants从release版本改为debug版本,再运行即可。
2021-02-08 16:46:59 1142 1
原创 Java浅拷贝和深拷贝知识点总结
文章目录1. 浅拷贝2. 深拷贝参考材料1. 浅拷贝无论是深拷贝还是浅拷贝,他们都需要当前的类支持Cloneable,并且重写了clone方法后才能进行拷贝浅拷贝时,如果遇到基本数据类型和String,会将这个值直接复制一份传入到新类中浅拷贝时,如果遇到引用数据类型,只会将该数据内存地址的引用复制一份传入到新类中,也就是说新类和原类中持有的对象是同一对象。举例:public class A{ String name; A(){ name = "name";
2021-01-29 16:33:08 109
原创 JAVA的ArrayList源码知识点总结
1. 原理2. 源码总结在讲源码之前,要先说几个方法。Collection类的toArray()方法:所有依赖Collection的类都要实现这个方法,这个方法主要就做一件事:将集合中存储的数据实体转为一个数组。至于如何转为数组,不同的集合实现方式也各不相同。System.arrayCopy()方法:这个方法是一个native方法,所以看不了java的源码。他的主要作用是:复制一个数组,并且将复制后的数组返回。Arrays.copyOf()方法:底层是System.arrayCopy(),作用就
2021-01-05 15:31:31 89
原创 Android的Gradle基本知识总结
文章目录1. Gradle1.1 项目结构2. build.gradle2.1 repositories2.2 dependencies2.3 buildscript参考材料此文使用的IDE是Android Studio1. GradleGradle是基于Groovy语法,而Groovy又是基于Java。所以四舍五入一下Gradle就是基于Java的。在Gradle中,每一个待编译的工程都是一个Project。每一个Project在构建的时候都包含一系列的Task。比如一个Android APK的编
2021-01-03 17:21:53 353
sortDemo.java
2020-04-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人