10 一叶飘舟

尚未进行身份认证

技术真好!

等级
TA的排名 27

android View 绘制完成监听

//view重绘时回调view.getViewTreeObserver().addOnDrawListener(newOnDrawListener(){ @Override publicvoidonDraw(){ //TODOAuto-generatedmethodstub }});//布局的状态发生变化或者可见性发生变化才会调用vie...

2019-08-23 17:49:29

统计一个ViewGroup中包含的子View的个数(递归和非递归实现)

题:使用递归和非递归编码实现统计一个ViewGroup中所包含的子View的个数?首先大家想到的肯定是递归实现,简单且较容易想到,代码如下: /***递归统计一个View的子View数(包含自身)**@paramroot*@return*/publicintcount1(Viewroot){...

2019-08-22 18:32:57

FlexBoxlayout在项目的使用总结

前言FlexBoxlayout是Google推出的开源的可伸缩性布局,在项目中也会经场使用,大大提高了用户的体验。本文主要记录了在项目中使用RecyclerView(多布局item)+FlexBoxLayout时遇到的问题做个总结,希望对你有所帮助。以自身的项目需求为例,如图所示:在”品牌筛选“、”客户分组“中用了三处可伸缩性布局。首先回顾一下相关概念和属性,已熟悉的同学...

2019-08-22 18:27:01

Git : 合并 commit 保持分支干净整洁

本文的读者需要已经了解基本的Git操作和开发流程。在我们开发完分支后,一般分支上会有很多commit——少不了诸如“fixtypo”,“sthwronginthepreviouscommit”之类的commit。在合并到主干的时候,往往这类commit显得臃肿多余。为了方便别人做codereview,我们希望合并一些不必要的commit使我们的分支显...

2019-08-22 15:43:15

Git使用规范(Android版)

引言本文根据Git分支管理策略,结合GitFlow分支管理实践,制定了这个适合Android开发中的Git版本管理规范。同时结合实际操作演示了使用示例,希望对你有所帮助。1.各分支简介下面分支中提到的的version应该替换为具体的版本,name应该替换为具体的开发人员姓名,content应该替换为需要优化的地方。master分支git的默认分⽀,主分支,不...

2019-08-22 14:55:16

Java Class对象与反射机制

JavaClass对象RTTIRTTI(Run-TimeTypeIdentification)运行时类型识别,其作用是在运行时识别一个对象的类型和类的信息。这里分两种:传统的”RRTI”—它假定我们在编译期已知道了所有类型(在没有反射机制创建和使用类对象时,一般都是编译期已确定其类型,如new对象时该类必须已定义好) 反射机制—它允许我们在运行时发现和使用类型的信息...

2019-08-09 16:41:02

Git中tag标签的使用

一、什么是tagtag是git版本库的一个标记,指向某个commit的指针。tag主要用于发布版本的管理,一个版本发布之后,我们可以为git打上v.1.0.1v.1.0.2...这样的标签。tag感觉跟branch有点相似,但是本质上和分工上是不同的:tag对应某次commit,是一个点,是不可移动的。branch对应一系列commit,是很多点连成的一根线,有一个H...

2019-08-06 20:10:29

Java内存模型及volatile

大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程则慢得多(不是一个数量级),因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里面就有了高速缓存。也就是说,当程序在运行过程中,会将运算需要的数据从主内存复制一份...

2019-08-05 00:16:31

Java线程等待唤醒机制(加深理解)

今天看源码的时候遇到这样一个场景,某线程里面的逻辑需要等待异步处理结果返回后才能继续执行。或者说想要把一个异步的操作封装成一个同步的过程。这里就用到了线程等待唤醒机制,下面具体看一下。等待唤醒机制示例下面代码是一个简单的线程唤醒机制示例,主要就是在Activity启动的时候初始化并start线程,线程start后会进入等待状态,在onResume方法中执行notify方法唤醒线程。通过这样...

2019-08-04 16:28:06

源码分析 — Activity的启动流程

前言熟悉Activity的启动流程和运行原理是一个合格的应用开发人员所应该具备的基本素质,其重要程度就不多做描述了。同时,知识栈应该不断的更新,最新发布的Android9.0版本相较于之前的几个版本也做了许多改动和重构,但是大体流程变化不大。本文基于Android9.0版本源码,从Activity启动方法startActivity为切入口分析整个流程。相关类简介Instrument...

2019-08-04 11:38:13

Android 查看并解决重复依赖

有时候引入了新的sdk后,build会出现如下问题:Causedby:com.android.dex.DexException:MultipledexfilesdefineLcom/google/gson/internal/bind/TypeAdapters;atcom.android.dx.merge.DexMerger.readSortableTypes...

2019-07-31 18:12:32

从源码解析-Activity的setContentView是怎么加载XML视图的

首先新建一个Activity(如下图所示),我们点击AndroidStudio的顶部菜单栏的Tools菜单,依次点击里面的Android》LayoutInspector;这样就会弹出一个展示Activity窗口视图结构的窗口出来,如图当前activity的布局里只添加了一个textview,并且当前Activity在setContentView之前没有进行Features设置。当用鼠...

2019-07-31 17:46:58

从源码的角度解析Handler、Looper、Message和MessageQueue

原文链接:https://blog.csdn.net/yyh352091626/article/details/74280135作为一名Android程序猿,想必在最开始都碰到这么一个问题,就是在子线程中弹出一个Toast,会抛出以下的异常:java.lang.RuntimeException:Can'tcreatehandlerinsidethreadthathasn...

2019-07-30 18:11:26

Android系统启动流程—— init进程zygote进程SystemServer进程启动流程

原文地址:https://blog.csdn.net/qq_30993595/article/details/82714409Android系统启动流程Android系统启动过程往细了说可以分为5步:Loader--》Kernel--》Native--》Framework--》ApplicationLoaderBootROM:当手机处于关机状态时,长按Power键...

2019-07-30 16:41:49

从Zygote说到View——Zygote的启动流程及运行机制

原文链接:https://juejin.im/post/5c05366f6fb9a049f23c82f2作者说这是一个系列的文章,目前看来也就这一篇了。前言Zygote的中文意思是受精卵、合子,可以理解为孵化器——Android中大多数应用进程和系统进程都是通过Zygote来生成的。PS:源码基于AndroidAPI27。Zygote是怎么启动的?init...

2019-07-30 15:27:09

深入理解 Android 中的各种 Context

前言网上关于Context的文章也已经有不少了,比如值得参考的有:AndroidContext完全解析,你所不知道的Context的各种细节AndroidContext到底是什么?但看了一下,发现还有值得讨论的地方,比如这个等式:Context个数=Service个数+Activity个数+1老实说,我不明白这个等式有什么意义,而且还是错的。首先多进程情况...

2019-07-30 13:56:45

declaration of 'org.json.JSONObject' appears in /system/framework/core-libart.jar

在android开发中,有时候会遇到下面问题:java.lang.NoSuchMethodError:Novirtualmethodh(Ljava/lang/String;)Ljava/lang/String;inclassLorg/json/JSONObject;oritssuperclasses(declarationof'org.json.JSONObject'...

2019-07-25 18:39:36

解决Charles https抓包不显示明文的问题

安装证书电脑端点击Help–SSLProxying–InstallCharlesRootCertificate可以看到可怕的不信任红字,系统默认对Charles证书是不信任的,我们双击Charles证书点开左边的信任,选择始终信任,点关闭,弹出账户密码验证,填一下就改好了回到证书列表可以看到Charles证书已经受信任了手机端点击Help–SSLPr...

2019-07-15 15:26:23

用标志位表示状态

在很多框架中,我们都能看到类似intxxx=0x0010这种代码,我们只知道他表示状态,很牛x,但是具体为啥要这样,或者它是如何表示多个不同状态的却全然不知.回顾位运算位运算符号列表符号英文名中文名\OR或&AND与~NOT非^XOR异或>>-右移<<-左移&...

2019-06-28 11:16:35

Android使用代码动态创建Selector(网络图片)

有时候我们需要从网络下载图片,并动态替换本地的图片,典型的场景就是替换tab上的图片。这里使用Glide加载图片,允许第一次加载慢,往后就采用缓存加载,无延迟,代码如下有一点需要大家注意的地方,那就是在drawable.addState添加状态的时候,要注意先添加选中状态的图片,其次才是未选中的状态,和shape添加选择器一样的。延伸:提供一个动态生成selector的工...

2019-05-22 18:29:48

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 博客之星
    博客之星
    授予通过"CSDN博客之星评选"中脱颖而出的十大博客之星称号的用户。
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。