Android
文章平均质量分 71
Android相关知识点和笔记
HoukHan
一个快乐的程序猿。
展开
-
为了性能,Glide 做了哪些优化?
前言Glide可以说是最常用的图片加载框架了,Glide链式调用使用方便,性能上也可以满足大多数场景的使用,Glide源码与原理也是面试中的常客。但是Glide的源码内容比较多,想要学习它的源码往往千头万绪,一时抓不住重点。本文以Glide做了哪些优化为切入点,介绍与学习Glide的源码与原理,如果对您有所帮助,欢迎点赞。Glide做了哪些优化?要想要回答这个问题,我们可以先想一想,如果我们自己要实现一个图片加载框架,我们会思考什么问题?1.图片下载是个耗时过转载 2021-08-02 09:39:50 · 667 阅读 · 0 评论 -
ADB 查看 Log日志的几种方式
1.通过PID查看日志adb 查看所有进程信息adb shell psadb 查看指定关键字的进程信息 *** 为关键字 可以为包名adb shell “ps | grep ***”adb 查看所有进程的 log信息adb logcat -v processadb 查看指定PID的log信息adb logcat -v process | grep ****2.通过关键字直接查看查看所有的log日志adb logcat过滤查看指定关键字的log ***为关键字adb logca原创 2021-07-21 10:25:47 · 19975 阅读 · 1 评论 -
JVM区域划分以及那些区域可能产生OOM(out of memory)
通常情况下,我们可以把 JVM 的内存区域划分为以下几个部分,其中,有的区域是以线程作为单位,而有的区域则是整个 JVM 进程唯一的:1.程序计数器在 JVM规范中,每个线程都有自己的程序计数器,并且任何时间一个线程只有一个方法在执行,也就是所谓的当前方法。程序计数器会存储当前线程正在执行的java 方法的 JVM 指令的地址;但是,如果正在执行的是本地方法,则未指定值。2.Java 虚拟机栈虚拟机栈,早期也被称之为 Java 栈。每个线程在被创建时,都会创建一个虚拟机栈,其内部保存了一个.转载 2021-07-16 09:58:54 · 733 阅读 · 2 评论 -
Java基础-基本数据类型
byte 数据类型是8位、有符号的,以二进制补码表示的整数;最小值是 -128(-2^7);最大值是 127(2^7-1);默认值是 0;byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;例子:byte a = 100,byte b = -50。原创 2020-03-12 17:31:49 · 270 阅读 · 0 评论 -
Activity生命周期
生命周期图正常情况正常情况下,Activity会走如上图的生命周期。下面是对每个生命周期的简介。onCreateonCreate:表示Activity正在被创建,这是生命周期的第一个方法,在这个方法中,我们可以做一些初始化的操作。可以进行的操作:比如调用setContentView去加载页面布局资源,初始化Activity的数据,注意的是虽然在onStart()中实现findviewbyid也可行,但我认为这没有必要,因为每次调用onStart()都会重新实例化view、控件。一些特殊的初始化原创 2020-07-08 09:59:19 · 249 阅读 · 0 评论 -
Android事件分发机制
https://carsonho.blog.csdn.net/article/details/54136311?utm_source=app原创 2020-07-01 09:15:49 · 111 阅读 · 0 评论 -
Java 抽象类和接口的区别
1-java 抽象类和接口的区别抽象类是用来(继承)当做超类的(子类用来实现的),可以用public和protected修饰,可以写具体的方法可以声明各种类型的成员变量接口是用来当做只能存在public的抽象方法(JDK8以后可以有),声明成员变量是public static final 类型的(即使不屑也会是这种类型)java不支持多继承,但是支持多实现,所以换种方式来讲,接口就是换种方式(接口)来实现C++那种多继承的抽象类中的抽象方法子类可以不用全部实现,但是接口中的方法实现类必须全部原创 2020-06-28 09:02:54 · 174 阅读 · 0 评论 -
Activity的四种启动模式
3-Activity的四种启动模式任务栈Task,是一种用来放置Activity实例的容器,他是以栈的形式进行盛放,也就是所谓的先进后出,主要有2个基本操作:压栈和出栈,其所存放的Activity是不支持重新排序的,只能根据压栈和出栈操作更改Activity的顺序。启动一个Application的时候,系统会为它默认创建一个对应的Task,用来放置根Activity。默认启动Activity会放在同一个Task中,新启动的Activity会被压入启动它的那个Activity的栈中,并且显示它。当用户按下原创 2020-06-28 09:11:05 · 183 阅读 · 0 评论 -
this、super、final、static、synchronized 关键字可以修饰什么,以及修饰后的作用?
this、super、final、static、synchronized 关键字可以修饰什么,以及修饰后的作用?this关键字super关键字final关键字static关键字(静态方法--静态变量--静态块--静态内部类)synchronized关键字参考地址this关键字this关键字主要分为四种情况指的是当前对象本身当你要把自己作为参数传递给别的对象时,也可以用this有时候,我们会用到一些内部类和匿名类,如事件处理 当在匿名类中用this时,这个this则指的是匿名类或原创 2020-06-29 09:46:37 · 1275 阅读 · 0 评论 -
单例模式 volatile 原子性(要么都成功,要么都失败)
2-单例模式 volatile 原子性(要么都成功,要么都失败)单例模式,顾名思义就是只有一个实例,可以分为饿汉式和懒汉式以及JDK1.5以后引入的枚举;饿汉式优点是当类在加载的时候就已经创建了实例,所以是安全的缺点是当类加载的时候就已经创建并完成了实例化,没有达到lazy-loading(延迟加载)的效果,所以如果该类始终没有用到,就会造成内存的浪费懒汉式是和懒汉式相反,这种方式实现了lazy-loading,但是有一个明显的缺点就是,这种单例只能在单线程环境下使用,在多线程环境下,一原创 2020-06-28 09:10:24 · 274 阅读 · 0 评论 -
Java中Volatile关键字的爱恨情仇
一、简介二、并发编程的3个基本概念三、锁的互斥和可见性四、Java的内存模型JMM以及共享变量的可见性五、volatile变量的特性六、volatile不适用的场景七、volatile原理八、单例模式的双重锁为什么要加volatile一、简介...原创 2021-07-05 14:54:21 · 87 阅读 · 0 评论 -
Java中Synchronized关键字的爱恨情仇
Synchronized直译为同步的意思,常在代码中用于解决多线程的并发问题。它是一种同步锁,可以确保线程互斥的访问同步代码。Java中每一个对象都可以作为锁,这是synchronized实现同步的基础普通同步方法(实例方法),锁是当前实例对象 ,进入同步代码前要获得当前实例的锁静态同步方法,锁是当前类的class对象 ,进入同步代码前要获得当前类对象的锁同步方法块,锁是括号里面的对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。一...原创 2021-06-30 17:44:31 · 92 阅读 · 2 评论 -
Java中Static关键字的爱恨情仇
Static直译为静态的意思,开发中常用static final 修饰常量以及单例模式模式中也常常会使用到static来让可以更方便的通过类名直接调用到。原创 2021-06-29 09:43:55 · 235 阅读 · 2 评论 -
Java集合中List,Set以及Map等集合体系详解(史上最全)
转载请注明出处:Java集合中List,Set以及Map等集合体系详解(史上最全)转载 2021-06-17 09:49:32 · 77 阅读 · 0 评论 -
Android 各个版本以及新特性
Android发行版本Android 各代版本 LogoAndroid在正式发行之前,最开始拥有两个内部测试版本,并且以著名的机器人名称来对其进行命名,它们分别是:阿童木(AndroidBeta),发条机器人(Android 1.0)。后来由于涉及到版权问题,谷歌将其命名规则变更为用甜点作为它们系统版本的代号的命名方法。甜点命名法开始于Android 1.5发布的时候。作为每个版...原创 2018-08-23 09:23:23 · 19125 阅读 · 1 评论 -
Android Studio 3.0-3.1 汉化包
JetBrains 系列软件汉化包---平方X原创汉化Android Studio 3.0-3.1 汉化包CLion 2018.1 汉化包GoLand 2017.3.2-2018.1 汉化包IntelliJ IDEA 2017.3-2018.1 汉化包PhpStorm 2017.3-2018.1 汉化包PyCharm 2017.3-2018.1 汉化包RubyMine ...转载 2018-07-10 11:39:00 · 5455 阅读 · 1 评论 -
Android ConstraintLayout(约束布局)
目录1.为什么要用ConstraintLayout 2.介绍 3.如何使用ConstraintLayout 3.1 添加依赖 3.2 相对定位 3.3 角度定位 3.4 边距 3.5 居中和偏移 3.6 尺寸约束 3.7 链 4.辅助工具 4.1 Optimizer 4.2 Barrier 4.3 Group 4.4 Placeholder 4.5.Guideli...原创 2019-10-17 14:27:31 · 670 阅读 · 0 评论 -
隐式跳转的秘密
今天开始在回读郭霖大神的第一行代码,虽说是一本入门的书籍,但是里面的知识点还是有许多自己以前没有关注过的,故写下来,毕竟眼过千遍不如手过一遍。我们都知道启动一个新的活动无非就两种方式 显式启动和隐式启动显式启动:直接指定要跳转的Activity类名,不用过滤,效率高,适用于同一个应用中的不同Activity跳转隐式启动:需要过滤,相对耗时,但可以找到所有之匹配的应用,适用于不同应用之间的A...原创 2018-10-23 10:30:43 · 778 阅读 · 0 评论 -
startActivityForResult()和setResult()
如果你想在Activity中得到新打开Activity关闭后返回的数据,你需要使用系统提供的startActivityForResult(Intent intent,int requestCode)方法打开新的Activity,新的Activity关闭后会向前面的Activity传回数据,为了得到传回的数据,你必须在前面的Activity中重写onActivityResult(int reques...原创 2018-10-24 10:48:20 · 242 阅读 · 0 评论