- 博客(29)
- 收藏
- 关注
原创 Android系统编译
代码镜像: 清华aosp https://mirrors.tuna.tsinghua.edu.cn/help/AOSP。source ~/.bashrc // 配置好的环境变量就会生效 或者重新打开一个终端也会生效。以具体、熟悉的场景为例,用一个个的案例跟读系统代码实现,场景当中涉及到系统相关内容时进行讲解。比如应用安装流程、关机/重启流程、app启动打开流程等等。参考博客: mp.weixin.qq.com。参考博客:mp.weixin.qq.com。安装repo:(清华镜像)4、代码编译(模拟器)
2023-12-21 07:52:09 351
原创 从一个小白剖析Android热更新原理
从谷歌搜索:PathClassLoader Source Code 查看目录位置 git然后下载指定目录。linux/unix: echo $path: :分隔符 windows:;loadClass:双亲委托机制(国内人创造的 parent delegation)放入sdk存源码的位置:sources for android29。下载完成之后需要把相关目录放入sdk存源码的位置里。>git checkout 指定版本。sync同步一下,即可本地查看源码。
2023-12-01 07:35:08 413
原创 2023年Andorid中高级面试题
一、Activity的启动方式standard 不管有没有已存在的实例,都生成新实例singleTop 如果发现有对应的Activity实例位于栈顶,则重复利用,否则创建实例singleTaska)栈内复用,复用时具有clearTop机制a)启用一个新的栈结构,将Activity放置于栈结构中,并保证不会有其它Activity实例进入b)方便多个应用共享全局唯一的实例二、Handler防止内存泄漏原因。
2023-11-29 07:04:25 841
原创 RxJava响应式编程框架设计(二)
当上下游在不同的线程中,通过Observable发射,处理,响应数据流时,如果上游发射数据的速度快于下游接收处理数据的速度,如果缓存池中的数据一直得不到处理,越积越多,最后就会造成内存溢出,这便是响应式编程中的背压(backpressure)问题。这样对于那些没来得及处理的数据就会造成积压,这样数据既不会丢失,也不会被垃圾回收机制回收,而是存放在一个异步缓存池中,// super:可以读写,向上转型 可以强转 读出来的是Object,需要强转。// 限制下游处理的数据条数。Scheduler:线程调度器。
2023-11-09 20:47:23 71
原创 RxJava响应式编程框架设计(一)
Completable:简化版的Observable,只有onComplete和onError事件,不能发射数据,常结合andThen操作符使用。onError:发动该事件时观察者会回调onError()方法,当发送该事件之后,其它事件将不会继续发送。floatMap:转换的数据是无序的,和map类型,但它返回的是一个新的Observable。RxJava其实就是提供一套异步编程的API,这套API是基于观察者模式的,而且是链式调用的。一个可观测的序列来组成异步的,基于事件的程序的库。
2023-11-06 08:20:21 41
原创 Android 性能优化全面突破
4.3:内存快照对比,为了更有效率的找出内存泄漏的对象,一般会获取两个堆转储文件(先dump一个,隔断时间再dump一个),由于短时间内有大量对象进出新生区导致的,内存忽高忽低,有段时间内快速上升和下落的趋势,分析图呈锯齿状。它伴随着频繁的GC,GC会大量占用UI线程和CPU资源,会导致APP整体卡顿,甚至有OOM的可能。程序中已动态分配的堆内存由于某种原因程序未释放或者无法释放,造成系统内存的浪费。GC-Roots:静态变量,线程池变量,常量池,JNI指针。手写实现LeakCanary核心代码。
2023-11-02 21:47:08 35
原创 我在B站学Android开发,B站优质Android视频教程汇总!
点击最多播放 149w播放量的那个。andorid核心 上中下三季。讲课的方式,很明白,清晰。Android(机构号)程序员拉大锯 (大佬)
2023-10-26 20:20:58 92
原创 AndroidStudio IDE常用快捷键
10、回到前一次或后一次鼠标停留的位置 ctrl+alt+方向键左右键。20、查看某个方法或者变量被谁使用 ctrl+alt+H,alt+F7。16、快速查找某字符串的位置 ctrl+shift+F。11、最近更改的文件 ctrl+shift+E。13、快速格式化代码 ctrl+shift+L。24、查看所有断点 ctrl+shift+f8。26、抽取方法里局部变量 ctrl+alt+v。22、查看接口的实现 ctrl+alt+b。9、快速切换大小写 ctrl+alt+U。
2023-10-24 21:14:42 31
原创 Android进阶三部曲及涉及到的知识体系《刘望舒》第一部3
Andorid 5.x用Palette提取颜色从而让主题能够动态适应当前界面的色调,做到整个app颜色的基调和谐统一。Now on Tap。Unicode9支持和全新的emoji表情符号;this, drawerLayout, toolbar, "打开抽屉", "关闭抽屉");改进的Java 8语言的支持;禁用多窗口:android:resizeableActivity="false"android:title="搜索"android:title="分享"android:title="设置"
2023-10-22 21:07:25 72
原创 Android进阶三部曲及涉及到的知识体系《刘望舒》第一部2
悬挂式Notification是Android5.0新增加的方式,和前两种不同的是,前两种必须下拉通知栏才可以看到通知,而悬挂式不需要下拉通知栏就可以直接显示出来,悬挂在屏幕上方并且焦点不变,仍在用户操作的界面,因此不会打断用户的操作,其实过几秒就会自动消失。实现瀑布流很简单,只需要在adapter中写一个随机的高度来控制每个item的高度就可以了,通常这个高度是由服务端的返回的数据高度来控制的。分为普通Notification,折叠式Notification,悬挂式Notification三种。
2023-10-19 07:47:12 63 1
原创 Android进阶三部曲及涉及到的知识体系《刘望舒》第一部
").setNegativeButton("取消", null).setPositiveButton("确定", new DialogInterface.OnClickListener() {// 设置布局管理器,默认是垂直的 如果设置水平就setOrientation(LinearLayoutManager.HORIZONTAL);Android应用开发 ----------大部分人停留在这,而且技术再老化。// 设置item增加和删除的动画。
2023-10-18 07:47:37 145 1
原创 Android进阶:抛弃EventBus吧,手写LiveDataBus通信框架!
定义:一个数据持有类,持有数据并且这个数据可以被观察被监听,和其他obserable不同的是,它是和Lifecycle是绑定的,在生命周期内使用有效,减少内存泄漏和引用问题。Hook:Android操作系统重系统维护着的一套事件分发机制,那么Hook就是在事件传送到终点前截获并监控事件的传输,并修改事件流程的过程。Handler 系统原生,能实现线程间通信 高耦合,不利于维护,容易导致内存泄漏,NullPointer。避免内存泄漏(绑定到组件的生命周期之上,组件销毁观察者会立刻自动清理自身数据)
2023-10-12 22:44:43 110
原创 Java语言的高级属性
1、泛型2、反射原理及动态代理模式3、多线程与Android线程性能优化4、线程池原理与技能拔高深入学习Java中的泛型1、为什么我们需要泛型?第一个场景:addInt(int x,int y) return x+y;addFloat(float x,float y) return x+y;addDouble(double x,double y) return x+y;总结:同样一段代码只是因为传入的参数不同,执行逻辑相同,此时应该考虑泛型。 第...
2022-04-17 12:42:15 1690
原创 java设计模式(适配器、装饰者、责任链、观察者)
适配器模式:package com.xiaowei.designpattern;public class AdapterModeTest { /** * 适配器模式 模式定义: 将一个类的接口转换成客户希望的另一个接口。 * Adapter模式使得原来由于接口不兼容而不能一起工作的那些类 可以一起工作。 * 比如电源转换,220V,电脑、手机、低功率电器的一些适配。 * 分两种:对象适配器模式(组合)和类适配器模式(继承)。 * 应用场景:...
2021-09-06 23:05:14 137
原创 java设计模式
C++中指针和引用区别:1.指针和引用区别(什么时候使用指针?什么时候使用引用?)相同点都是地址概念,指针指向的是一块内存区域,他的内容是所指向内存的地址,引用某块内存的别名通俗:都是代表地址不同点第一点:指针是内存地址,引用是内存地址别名,并且程序需要为指针变量分配内存区域,而引用不需要分配内存区域第二点:引用在使用的时候不需要*解引用,但是指针需要*解引用第三点:引用只能被...
2021-09-05 20:47:06 56
原创 Windows系统下通过JNI调用dll动态库的实现
目的:java代码使用jni获取数据 工具: eclipse + Microsoft visual studio (c++) 业务代码:Java代码业务实现:package com.weip.jni;/*** 操作步骤:* 1、进到工程目录,src下* 2、C:\Users\Administrator>e:* E:\>cd E:\eclipse-wo...
2019-11-28 21:23:23 447 3
原创 C语言文件切割、合并
分割与合并的思想1. 分割:和安卓多线程下载类似 ,首先将文件长度按N段分,然后将每段文件读取并写入到相应的临时文件,以达到分割的目的2. 合并:将每段临时文件依次读取,然后写入到要合并成的新文件注意细节1. 文件打开后记得要关闭2. 对文件打开的状态进行判断,处理异常3. fgets函数会获取行尾的\n,必要时进行相关处理,fputs输入字符串时不会自动添加\n4. ...
2019-11-27 16:41:51 502
原创 C语言文件加解密入门
文件的加密(加密的算法可以自定义) ---文本文件 //分析算法:异或运算(^)//假设a =5 b =6 a二进制101 b二进制110 //异或运算规则:相同为0 不同为1//a^b:异或运算 011int main(){ //源文件 char source_file_path[] = "C:\\Users\\Administrator\\Des...
2019-11-25 21:21:37 165 1
原创 C语言文件(文本文件和二进制文件)读写
//允许使用过时的函数和不安全的函数,去掉警告#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//内容一:读取文件(文本文件)/*int main(){ char file_path[] = "C:\\Users\...
2019-11-25 20:21:59 1338
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人