- 博客(43)
- 收藏
- 关注
原创 【安卓脚本】Android工程中文硬编码抽取
安卓在进行国际化多语言功能时经常会遇到一个头疼的问题,就是在以往的项目中往往存在大量的中文硬编码,这块人工处理非常耗工作量,因此分享一个通用脚本用于模块级别的硬编码抽取,考虑到可能存在很多抽取不准确的情况,因此建议分模块进行抽取,工程级别的可以自行修改脚本实现。
2024-11-23 13:40:11
554
原创 【跨平台】ReactNative 入门初探
可以设置为自定义加载bundle路径,bundle依赖的资源是相对路径,将构建出来的资源文件一起放到对应位置即可.builder()Redux基础概念与安卓通信参考相关类注解等官网与安卓交互教程。
2024-10-23 22:16:59
1062
原创 【性能优化】安卓性能优化之CPU优化
ANR(Application Not Responding)的监测原理本质上是消息机制,设定一个delay消息,超时未被移除则触发ANR。具体逻辑处理都在system server端,包括发送超时消息,移除超时消息,处理超时消息以及ANR弹框展示等;Service ANR:前台20s,后台200s;/sys/devices/system/cpu 目录下的文件夹。ContentProvider ANR:10s,少见。Broadcast ANR:前台10s,后台60s。通过排查布局,减少过度绘制。
2024-10-23 22:13:55
1216
原创 【安卓面试】Kotlin知识点盘点
CoroutineScope 的实例可以通过 CoroutineScope() 或 MainScope() 的工厂函数来构建。前者创建通用作用域,后者创建 UI 应用程序的作用域并使用 Dispatchers.Main 作为默认的调度器${Threadname")// 关闭自定义线程池Executors)?
2024-02-28 23:43:07
1027
原创 【Gradle】AGP升级7.0及适配Replugin的多包名工程改造
随着AGP版本以及kotlin的普及,以及compose逐渐被大家接受,为了可以使用更多的新特性以及更好的性能,升级Android Gradle Plugin(AGP)以及Kotlin Gradle Plugin (KGP)已经是必不可少的步骤之一,其中AGP版本7.0、8.0的更新有较大的变化,本文会对自己的玩安卓项目进行AGP7.0的升级并且分享最近遇到的多包名工程化改造以及适配遇到的问题。
2023-12-20 00:22:43
2562
原创 Java设计模式
设计模式参考:菜鸟教程单例模式保证在同一个进程只拥有一个实例单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。实现:持有一个该例的全局静态变量 public static Earth earth;将构造方法私有 private创建外部调用方法返回实例饿汉式:线程安全,但是在类加载时就初始化,浪费内存,容易产生垃圾对象pub......
2022-07-11 13:42:06
1296
原创 组件化解耦 | 浅析ARouter路由发现原理与简单实践
组件化解耦 | 浅析ARouter路由查找原理前言项目地址/资源项目概览路由动态注册与生成技术要点APT处理注解路由初始化前言作为路由框架,阿里的ARouter应该算是路由框架的经典了,上一次用到ARouter还是在上家公司做App,当然对于SDK开发来说,ARouter不免有点过重了,里面有大量对Activity和Fragment的业务,对于SDK解耦基本用不上,但是我们还是可以参考ARouter的路由发现思路,完成一个自己的小路由框架,直接进入主题吧项目地址/资源ARouter项目概览对
2022-01-04 21:22:47
2684
1
原创 Android 打包动态修改Application类继承
Android 动态修改Application类继承背景具体实现引入依赖库具体实现背景Android在接入各类渠道SDK的时候,常常会遇到需要继承三方Application的情况;网上几种方案:利用代理模式实现多继承利用gradle 不同的favor实现不同渠道打包利用gradle插件,动态修改字节码为了不维护多个风味,本文要分享的是第三种方案,直接通过自定义的标识去动态修改字节码实现不同渠道继承所需要的三方application类具体实现知识点包括:自定义gradle插件t
2021-01-31 22:00:32
585
原创 计算机基础学习笔记 | 数据结构基础
数据结构基础十种常用数据结构十种常用的算法时间复杂度空间复杂度基础数据结构数组 array读取元素更新元素插入元素删除元素链表基础数据结构:数据的组织、管理、存储格式,其目的是为了高效的访问和修改数据算法:一系列程序指令,用于处理特定的运算和逻辑问题十种常用数据结构数组链表栈队列散列表二叉树堆跳表图Trie 树十种常用的算法递归排序二分查找搜索哈希...
2020-04-10 15:42:37
866
原创 开发艺术之旅 | 四大组件的工作过程
开发艺术之旅 | 四大组件的工作过程Activity的工作过程Activity的工作过程从最常使用的StartActivity方法开始,流程过程如下:最后调用到app.thread.scheduleLaunchActivity,而app.thread是一个IApplication类型的IInterface接口,其之后关系图如下:在这个方法里,向一个Handler发送了一个消息,调用pe...
2020-03-25 17:32:26
195
原创 手把手教你封装一个好用的okhttp请求框架
手把手教你封装一个好用的okhttp请求框架前言OkHttpClient 客户端前言在Android开发中网络框架的使用是必不可少的,okhttp相信大家一定不陌生,本篇基于okhttp进行二次封装,实现简单快捷的okhttp封装。阅读前提:知道okhttp的简单使用。主要包括四个部分:请求client请求参数Request封装请求结果 & 错误解析OkHttpCli...
2020-02-27 17:48:47
921
原创 开发艺术之旅 | Activity 生命周期和启动模式
生命周期生命周期状态工作onCreateActivity正在被创建可以做一些初始化工作onRestartActivity从不可见重新变成可见onStartActivity正在被启动,“可见”但不在前台onResumeActivity可见并且出现在前台,可交互onPauseActivity正在停止,接下来一般会调用onStop存储工...
2020-01-20 13:39:16
1255
2
原创 开发艺术之旅 | 浅析Window和WindowManager
开发艺术之旅 | Window和WindowManager初识WindowWindow以及其内部机制内部机制添加Window删除过程更新过程初识WindowWindow表示一个“窗口”的概念,用于展示给用户,View是其具体实现,Window是View的实际管理者表示Window抽象类,具体实现是PhoneWindow,即Activity视图层级下我们看到的那个WindowManag...
2020-01-08 16:55:09
523
原创 开发艺术之旅 | IPC机制
开发艺术之旅 | IPC机制基础使用多进程模式序列化传输数据SerializableParcelableBinder使用AIDL文件了解Binder机制IUserManager.java 结构Stub类Stub.Proxy 类小结Android几种IPC机制Messenger使用AIDL经常会听到AIDL、Binder机制,但是其实很多时候用不到(可能只是我用得少hhh),有时间来总结下吧,先看......
2019-12-11 22:31:23
448
原创 Okhttp学习笔记(三)核心之二:okHttp拦截器链
Okhttp学习笔记(三)核心之二:okHttp拦截器链学习资料:拦截器链学习资料:BAT大牛带你深度剖析Android 十大开源框架上一篇文章:Okhttp学习笔记(一) 初步认识&& 源码浅析Okhttp学习笔记(二)核心之一:Dispatcher拦截器链前面可以看到,获取的response都是通过 getResponseWithInterceptorChain这...
2019-12-10 18:27:31
446
原创 开发艺术之旅 | View的工作原理
开发艺术之旅 | View的工作原理ViewRoot 和 DecorViewViewRoot 和 DecorView当Activity对象创建完毕后,会将DecorView添加到Window中,同时会创建ViewRootImpl,并且将ViewRootImpl和DecorView建立关联...
2019-11-26 21:29:33
610
原创 2020Android初中级面试题记录
2019Android初中级面试题记录Java网络编程Android马上就2020年啦,对工资有想法可以开始准备下年后的跳槽季(手动滑稽)这几天出去面试了一下,作为一个19届刚刚毕业的小安卓,虽然算起来毕业也才三四个月,但是算起来实习到现在也差不多一年啦,但是发现外面的公司好像还是会把你当应届生看待(好像本来就是),抓住这短暂的时机,加油吧!JavaQ:equals与==的区别==是...
2019-11-20 22:36:25
944
原创 Android组件化之路记录
Android组件化之路踩坑踩坑ARouter使用基础配置在kotlin中的初始化配置基础使用build.gradle 配置自定义输出apk名字读取config.gradle的配置信息version.gradle 依赖版本配置Bug 记录**No module name**buildOutput.apkData must not be nullBinary XML file line #24: B...
2019-11-05 14:00:12
636
原创 Okhttp学习笔记(二)核心之一:Dispatcher
Okhttp学习笔记学习资料:学习资料:BAT大牛带你深度剖析Android 十大开源框架
2019-11-05 10:48:00
294
原创 Okhttp学习笔记(一) 初步认识&& 源码浅析
Okhttp学习笔记同步请求使用步骤源码分析创建okhttpclient构建Request对象构建Call对象完成同步请求同步请求发起请求后,会进入阻塞状态,知道收到响应使用步骤创建一个OkHttpClient对象构建一个Request对象,通过OkHttpClient和Request对象,构建出Call对象执行call的execute方法源码分析创建okhttpclient...
2019-10-27 20:44:49
285
原创 三步简单实现Android 共享元素转场动画
三步简单实现Android 共享元素转场动画先上效果图Step 1Step 2 在启动的Activity绑定控件Step3 目标Activity绑定控件拓展以及小问题退出带动画api:结合Glide使用会出现Imageview、PhotoView自动放大、模糊等问题,给动画添加监听器先上效果图Step 1在Activity主题style文件加入这行<item name="andro...
2019-10-09 22:31:37
651
原创 Kotlin 类与对象之构造函数(四)
类关键字:Class构造函数主构造函数次构造函数主构造函数只能有一个主构造函数,主构造函数为类头的一部分:在类名之后class Person constructor(firstName: String) { ... }主构造函数不能包含任何代码,初始化的代码可以放到以 init 关键字作为前缀的初始化块class test(arg : Int){ init{ ...
2019-09-15 23:07:46
202
原创 Kotlin lambda表达式
官方文档官方文档使用完整语法lambda 表达式总是括在花括号中, 完整语法形式的参数声明放在花括号内,并有可选的类型标注,函数体跟在一个 -> 符号之后。如果推断出的该 lambda 的返回类型不是 Unit,那么该 lambda 主体中的最后一个(或可能是单个)表达式会视为返回值。lambda表达式总是在花括号内!!,其参数可以放在花括号里面!!val sum: (I...
2019-09-15 22:59:26
237
原创 Kotlin 函数进阶 作用域函数:let、with、also...
Kotlin—— 作用域函数概述官方文档简介作用五个函数★区别区别详解引用方法: this 还是 it使用this的函数使用it的函数返回值返回上下文对象(本身)返回Lambda表达式结果( 返回一个结果 默认为最后一行代码 可以为空)五个函数详解let (使用it 、返回lambda对象)with (使用this,返回lambda结果)run (使用this,返回lambda结果)apply(使...
2019-09-15 22:43:23
549
原创 Kotlin 类与对象 —— 数据类
数据类定义一个数据类自动从声明的所有属性导出以下成员:数据类满足条件复制 copy()函数componentN关键字 data定义一个数据类data class PersonD(val age : Int, val name: String,val area: String)便可以实现 getter、setter、equals、toString等方法自动从声明的所有属性导出以下成员:...
2019-08-29 10:32:27
351
原创 Kotlin 解构声明
Kotlin 解构声明为什么会有怎么用在Map上使用为什么会有在java中,我们需要一个构造一个对象并且可能会用到构造对象时的参数,例如 int age = 22; String name = "Tom"; Person p = new Person(age,name); Log.d(TAG,name);Kotlin 提供一个更为简洁的用法怎么用还是那个例子,一个Per...
2019-08-29 10:32:00
602
原创 Kotlin之路——开始
开始基础资料网址从实习面试第一次听到Kotlin开始,就一直觉得这东西好像很高大上的样子~实习这半年来,说真的学到了不少东西,也看到了不少东西。一边是“安卓要凉啦”的焦虑,一边是自己喜欢的东西,总是难以割舍。最后还是决定在这条路上走下去。一晃半年过去啦,跌跌撞撞终于开始学一下kotlin,对于一个非科班出身的码农来说要学的东西实在太多了。不说了,开始记录一下Kotlin的学习笔记吧基础基础...
2019-08-15 22:24:13
143
原创 Kotlin 条件控制知识(三)
Kotlin 条件控制知识if操作符使用区间when 三种情况类似于switch不带参数,类似于 if-else-if直接返回赋值for循环带索引的遍历遍历mapwhile && do...while返回、跳转标签限制跳转if操作符三元操作符 val c = if (condition) a else bif表达式结果赋值给变量 val max = if(a>b){ ...
2019-08-15 22:22:58
242
原创 Kotlin基础知识(一)
基础知识函数定义常量&变量定义字符串Null 检查机制类型检测及自动类型转换区间一个对象实例调用多个方法(with)交换两个值可空布尔值学习资料函数定义关键字:fun指定返回类型:fun sum(a : Int,b : Int): Int{ return a+b}不指定返回类型:fun sum2(a:Int,b: Int) = a+b无返回类型:fun sum4(a:Int,...
2019-08-15 22:19:47
312
原创 Kotlin基础数据类型(二)
Kotlin基础数据类型基本数据类型字面常量数字比较类型转换位操作符字符数组字符串基本数据类型类型位宽Double64Float32Long64int32short16byte8字面常量十进制:123长整型:123L16进制:0x0F2进制:0b00001010不支持八进制double默认写法:123.5,123...
2019-08-15 22:08:30
223
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人