4 just2learn

尚未进行身份认证

暂无相关简介

等级
TA的排名 20w+

ConstraintLayout 属性详解 和Chain的使用

本文的顺序,大体按照ConstraintLayout官方文档的顺序依次讲解(翻译)属性和用法,并对疑难点进行额外说明。关于可视化操作,可参考我写的动态图解&实例 ConstraintLayout Chain和郭神博文可视化操作使用前的准备引入也有坑,无力吐槽。先放上 截止至20170524,最新版本1.0.1:compile 'com.android.support.const...

2020-04-07 20:01:48

Android应用ANR分析

最近碰到了个死锁的anr,看了这篇文章挺有用的,mark下:一.ANR是什么Application Not Responding,字面意思就是应用无响应,稍加解释就是用户的一些操作无法从应用中获取反馈。在实际的应用中应当去避免这种现象,虽然他暂时不会造成应用崩溃,但是却极大的损坏了用户体验。二.ANR的触发原因出现ANR之后一个直观现象就是系统会展示出一个ANR对话框,大概是...

2020-01-19 19:20:37

AsyncLayoutInflater实现异步加载布局

「性能优化1.0」启动分类及启动时间的测量「性能优化1.1」计算方法的执行时间「性能优化1.2」异步优化「性能优化1.3」延迟加载方案「性能优化2.0」布局加载原理「性能优化2.1」LayoutInflater Hook控件加载耗时「性能优化2.2」获取布局的加载时间「性能优化2.3」Choreographer检测丢帧「性能优化2.4」 AsyncLayoutInflater实现异步加载布局一...

2020-01-16 10:45:55

xfermode的基本用法

之前使用时遇到点坑,有个注意的地方:绘制顺序,先画src bitmap,设置xfermode后,再画dst bitmap。只有两次都是draw bitmap时才有效,之前我用的drawCircle直接绘制图形叠加后没效果,后来先自己画一个圆的bitmap在往上面画就可以了。下面转载一篇xfermode 像素叠加原理的介绍:1、Xfermode是什么在Android自定义控...

2019-12-25 14:34:34

Android 静态广播和动态广播接收顺序

Android广播有两个很重要的要素: 1 广播-用于发送广播 有序广播 - 被广播接收器接收后,可被终止,无法往下继续传达。 典型代表:短信广播 普通广播 - 发送至每一个已经注册(订阅)的广播接收器,无法被终止。 典型代表:开机启动广播 2广播接收器- 用于订阅广播后接收广播 静态注册广...

2019-12-16 19:58:20

JVM运行原理详解

1.JVM简析:作为一名Java使用者,掌握JVM的体系结构也是很有必要的。说起Java,我们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:Java平台由Java虚拟机和Java应用程序接口搭建,Java语言则是...

2019-12-10 17:10:46

JVM深度解析

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台...

2019-12-10 16:38:36

MessageQueue原理分析(2)

而在Handler的消息机制中,MessageQueue可能算是最重要的,今天我们就来分析这个类。在分析之前,先提出两个问题:1.Handler.sendMessageDelayed()怎么实现延迟的?2.Looper.loop是一个死循环,拿不到需要处理的Message就会阻塞,那在UI线程中为什么不会导致ANR?现在,我们带着这两个问题进入MessageQueue的分析中。首先看第一...

2019-12-05 19:20:12

MessageQueue原理分析(1)

每次使用Handler发送一个Message的时候,最终会先调用MessageQueue的enqueueMessage方法将Message方法放入到MessageQueue里面,最后会调用Handler的mQueue的enqueueMessage方法。MessageQueue类内部实现了两个Interface,一个静态内部类。接口IdleHandler在消息队列没有消息时使用,处理poll...

2019-12-05 18:35:42

java中带参数的try(){}语法含义是什么?

Java 7简化资源清理(try-with-resources)自动关闭资源的try语句自动关闭资源格式:try( )//此处多了圆括号,()圆括号内写打开资源的代码,在这里创建的对象必须实现Autocloseable接口{IO操作}catch(){处理异常的代码}带资源的try语句(try-with-resource)的最简形式为:...

2019-11-28 15:54:28

深入理解单例模式:静态内部类单例原理

本文主要介绍java的单例模式,以及详细剖析静态内部类之所以能够实现单例的原理。OK,废话不多说,进入正文。首先我们要先了解下单例的四大原则:1.构造私有。2.以静态方法或者枚举返回实例。3.确保实例只有一个,尤其是多线程环境。4.确保反序列换时不会重新构建对象。我们常用的单例模式有:饿汉模式、懒汉模式、双重锁懒汉模式、静态内部类模式、枚举模式,我们来逐一分析下这些模式的...

2019-11-28 14:11:04

彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系

首先用一段通俗易懂但是不是非常专业的话描述一下三者的概念、区别和联系。Gradle是个构建系统,能够简化你的编译、打包、测试过程。熟悉Java的同学,可以把Gradle类比成Maven。 Gradle Wrapper的作用是简化Gradle本身的安装、部署。不同版本的项目可能需要不同版本的Gradle,手工部署的话比较麻烦,而且可能产生冲突,所以需要Gradle Wrapper帮你搞定这些事...

2019-11-28 11:28:45

Android - 收藏集

Android 自定义View的各种姿势1Activity的显示之ViewRootImpl详解Activity的显示之ViewRootImpl初探Activity的显示之Window和ViewAndroid系统的创世之初以及Activity的生命周期图解Android事件分发机制(深入底层源码)Android 自定义View的各种姿势2Android 内存泄漏分析与解决...

2019-11-27 13:35:36

Android6.0 SurfaceControl分析(转载)

这篇文字写的不错,收藏文章太多不好找,转载链接只为能快速找到文章:(一)SurfaceControl创建&使用 Surface创建&使用https://blog.csdn.net/kc58236582/article/details/64918810(二)SurfaceControl和SurfaceFlinger通信https://blog.csdn.n...

2019-11-26 19:34:19

Surface分析

本篇针对Surface模块进行分析,从Java层的Activity创建开始,到ViewRoot、WindowsManagerService,再到JNI层和Native层。Surface的创建涉及三个部分: App 进程 App需要将自己的内容显示在屏幕上,所以App负责发起Surface创建请求,创建好Surface后, 就可以直接可以在canvas上画图等,最终都会保存到Surfac...

2019-11-25 16:02:40

聊一聊Android的消息机制

1概述在Android平台上,主要用到两种通信机制,即Binder机制和消息机制,前者用于跨进程通信,后者用于进程内部通信。从技术实现上来说,消息机制还是比较简单的。从大的方面讲,不光是Android平台,各种平台的消息机制的原理基本上都是相近的,其中用到的主要概念大概有:1)消息发送者;2)消息队列;3)消息处理循环。示意图如下:图中表达的基本意思是,消息发送者通过某种方...

2019-11-20 14:40:47

createPackageContext方法分析----------记一次context的getApplicationContext为空问题

通过createPackageContext方法获取其他应用context,lnflate这个应用的布局视图添加后,此视图context的getApplicationContext为空问题调查。问题现象:通过调用createPackageContext方法获取了某个应用的context:remoteContext,然后通过remoteContext.getResources()获取对于...

2019-11-15 17:33:40

Android里的Context

侯亮(本文以Android 7.0为准)1 什么是Context?在Android平台上,Context是一个基本的概念,它在逻辑上表示一个运行期的“上下文”。其实何止是Android平台,在其他平台上,一样有上下文的概念,比如一个进程,其实也是个上下文。我们在编写最简单的C语言程序时,凭什么写一句简单的malloc()就可以申请到内存,写一句简单的open()就可以打开一个文...

2019-11-15 16:50:16

Java四种线程池newCachedThreadPool, newFixedThreadPool, newScheduledThreadPool, newSingleThreadExecutor

1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?newThread(newRunnable() { @Override publicvoidrun() { // TODO Auto-generated method stub }}).start();那你就out太多了,new Thread的弊端如下:a....

2019-11-04 13:36:52

Binder之传输机制篇_下

1 事务的传递和处理 从IPCThreadState的角度看,它的transact()函数是通过向binder驱动发出BC_TRANSACTION语义,来表达其传输意图的,而后如有必要,它会等待从binder发回的回馈,这些回馈语义常常以“BR_”开头。另一方面,当IPCThreadState作为处理命令的一方需要向发起方反馈信息的话,它会调用sendReply()函数,向bin...

2019-09-11 23:47:45

查看更多

勋章 我的勋章
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。