
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
如果项目没有用mvp和mvvm这种框架自带解决网络请求内存泄漏,用的mvc处理内存泄漏的时候可以考虑rxjava解绑或直接取消okhttp的请求,下面这个方法就是直接取消okhttp的请求的方法如果有tag并且tag是LifecycleOwner可以这样写//tag直接用LifecycleOwner最方便if (tag instanceofLifecycleOwner){LifecycleOwne
从本质上来说,lateinit和by lazy的区别是体现在内存上:lateinit修饰的属性,会在内存中创建,只不过没有赋值by lazy修饰的属性,只有在使用的时候才会在内存中创建。
相对于Android系统,鸿蒙系统做出了这些优化1.用华为推出的IDE开发可以自动适配各种设备,手机和电视、手表等等2.推出方舟编译器可以使开发出的应用运行在不同的操作系统上(对cpu机器指令的适配):Android系统慢的原因主要是因为虚拟机对源码的编译、解释耗时,细数Android版本变化中从dalvik虚拟机到ART都是致力优化虚拟机的编译解释时间:Android 1.0(200...
一、介绍ArrayList是以什么数据结构实现的ArrayList底层的数据结构是顺序表。顺序表:物理内存上连续、逻辑上连续、大小可以动态扩展顺序表是由数组实现的,说道这里就理一下数组、链表、顺序表之间的关系。逻辑结构:结构定义中是对操作对像的数学描述,描述的是数据元素之间的逻辑关系。例如,线性结构,树形结构,图状结构或网状结构。它们都属于逻辑结构。物理结构:又称存储结构,是数据结构在计算机中的表
setContentView我们在Activity中经常见到,它的作用就是把我们的布局文件放在Activity中显示,下面我们根据源码分析setContentView是如何做到的。
类的加载加载、验证、准备、初始化和卸载这五个阶段的顺序是确定的类的初始化什么情况下需要开始类加载过程的第一个阶段:"加载"。虚拟机规范中并没强行约束,这点可以交给虚拟机的的具体实现自由把握,但是对于初始化阶段虚拟机规范是严格规定了如下几种情况,如果类未初始化会对类进行初始化。创建类的实例访问类的静态变量(除常量【被final修辞的静态变量】原因:常量一种特殊的变量,因为编译..
一、volatile:1、保证变量在线程间可见,对volatile变量所有的写操作都能立即反应到其他线程中,换句话说,volatile变量在各个线程中是一致的(得益于java内存模型—"先行发生原则");2、禁止指令的重排序优化。解决的问题是:在进行类似于赋值(修改变量时注意不是运算)时的操作时,虚拟机会重排指令进行优化这时赋的值会暂存起来,如果此时其他线程也对这个值进行赋值等操作就会...
相对于Android系统,鸿蒙系统做出了这些优化1.用华为推出的IDE开发可以自动适配各种设备,手机和电视、手表等等2.推出方舟编译器可以使开发出的应用运行在不同的操作系统上(对cpu机器指令的适配):Android系统慢的原因主要是因为虚拟机对源码的编译、解释耗时,细数Android版本变化中从dalvik虚拟机到ART都是致力优化虚拟机的编译解释时间:Android 1.0(200...
推荐书籍:java虚拟机规范 这本书告诉我们: JVM是一种规范深入理解java虚拟机先有个整体的概念:java程序运行的本质就是方法套方法,我们需要知道的就是我们编写的java文件编译后的字节码被JVM如何保存(即如何把一个类的各种信息存下来),在方法执行的时候如何能找到之前存的信息,还有在执行过程中发生了什么(内存中如何变化)一、JVM如何保存字节码文件1. Java代码编译成的字节码文件:先
原理: 编写好的 Java 源文件,需要经过 javac 的编译,翻译为虚拟机能够加载解析的字节码 Class 文件。注解处理器是 javac 自带的一个工具,用来在编译时期扫描处理注解信息。你可以为某些注解注册自己的注解处理器。 注册的注解处理器由 javac调起,并将注解信息传递给注解处理器进行处理。简单实现:我们可以给我们的自定义注解写一个处理器来在编译的时候,处理一些逻辑,上面说到了原理就







