自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一只特立独行的猪

耐得住寂寞,守得了繁华

  • 博客(74)
  • 资源 (1)
  • 问答 (3)
  • 收藏
  • 关注

原创 android事件分发机制从入门到入土

猜想:当触摸到一个控件,首先触摸事件找到到最上层的dispatchTouchEvent方法(事件是通过dispatchTouchEvent方法分发的),然后触摸事件从上往下分发,在分发期间上层可以截断对下层的分发,如果没有截断,最下层会接受并处理触摸事件,处理完后会选择继续处理还是交给上层的处理。 当你点击了某个控件,首先会去调用该控件所在布局的dispatchTouchEvent方法,然后在布局

2017-02-09 15:57:37 931

原创 下载和阅读Android源码

我们分析源码其实是不需要全部代码的,因为AOSP不仅包括系统源码,还有些工具代码,如aapt,adb等,这些我们根本不需要,而且即便是系统源码,也不是所有我们都需要看,如果真的全部看,你这辈子都看不完,所以我还是推荐大家单个下载。我一直在说兴趣,因为兴趣是最好的老师,只有你对一样东西感兴趣了,才会有动力去学,去研究,才会不觉得累,如果一开始就去啃一些你不感兴趣的东西,到头来也是乏味不专注的,理解的程度也是不深,而且很有可能失去信心,最后放弃阅读。有的从事硬件开发,可能对底层实现感兴趣。

2023-03-20 16:23:09 1976 2

转载 抖音 Android 性能优化系列:启动优化实践

启动是指用户从点击 icon 到看到页面首帧的整个过程,启动优化的目标就是减少这一过程的耗时。启动过程比较复杂,在进程与线程维度,它涉及到多次跨进程的通信与多个线程之间的切换;在耗时成因维度,它包括 CPU、CPU 调度、IO、锁等待等多类耗时。虽然启动过程比较复杂,但是我们最终可以把它抽象成主线程的一个线性过程。因此对于启动性能的优化,就是去缩短主线程的这个线性过程。接下来,我们将按照主线程直接优化、后台线程间接优化、全局优化。

2022-12-30 15:24:28 863

原创 Android软键盘windowSoftInputMode的使用与原理(原理篇)

上一篇文章介绍了windowSoftInputMode各个属性的具体作用,下面我们在源码层面来分析一下各个属性的实现原理(基于Android9)。

2022-11-01 14:21:08 3459 3

原创 Android软键盘windowSoftInputMode的使用与原理(使用篇)

看了网上很多文章都没有很准确的说明windowSoftInputMode的几种模式的作用,而且大部分文章只是分析了一下如何使用并没有深入源码去分析原理,今天这篇文章就来分析一下Android软键盘windowSoftInputMode的各个模式的作用和原理,文章一共分为两篇,一是使用篇,二是原理篇,下面开始使用篇的讲解。如上,windowSoftInputMode有六个stateXXX的值和三个adjustXXX的值。

2022-08-25 14:27:59 7981 1

原创 Android抓包思想总结

Android中的网络请求一般有三种类型:HTTP、HTTPS、Socket。Http和Https都是基于socket封装的上层框架,一般都是使用他们,但也不排除一些对安全要求比较高的应用使用Socket自己封装网络请求,这种就比较麻烦,关键是抓到了数据也不好分析,我们主要分析一下Http和Https。

2022-02-17 14:27:36 3153

原创 记一次SQLiteDatabase的关闭问题

在网上搜了一下关于SQLite数据库的关闭问题发现大部分人建议不关闭数据库,或者在退出App的时候在关闭数据库,但是另一种说法是如果长时间不关闭数据库会出现下面的异常:

2022-01-19 11:21:16 3457

原创 逆向某视频app(二)

其实如果app没有加固,我们只需要掌握一点smali的语法就可以直接修改并打包了,但是加固之后就会麻烦很多,首先需要脱壳拿到真正的dex文件,然后再反编译dex找到并修改smali文件,接着还要修改AndroidManifest.xml文件,因为加固的时候也会修改这里,最后再重新打包。

2021-12-29 16:24:04 3382 3

原创 fragment懒加载的前世与今生

文章目录前言为什么要对Fragment做延迟加载?延时加载的方法1.setUserVisibleHint2.onHiddenChanged3.setMaxLifecycle1.不设置setMaxLifecycle2.setMaxLifecycle为CREATED3.setMaxLifecycle为STARTED4.setMaxLifecycle为RESUMED5.具体实现4.ViewPager2总结前言Fragment懒加载是android开发中一个常见的问题,网上也有很多关于懒加载的文章,而我写这篇博

2020-06-17 08:30:36 1146

原创 基本的电脑硬件知识,知道买电脑就不会交智商税了

文章目录前言CPUInter主板内存硬盘显卡电源前言作为一个对电脑硬件有一点小兴趣并且有一点小了解的数码极客,今天写这篇文章普及一下电脑硬件的知识,如果你对电脑硬件不是很了解,并且最近打算买电脑或组装电脑可以看一下本文。本文主要涉及CPU、主板、内存、硬盘、显卡、电源。CPUcpu是电脑最重要的一部分,也是除了显卡之外最贵的一个,但是显卡不是必须的,cpu却是必须的。目前市场上的pc端的c...

2020-04-29 17:58:26 1403

原创 Android10.0通知Notification的使用这一篇就够了

文章目录前言通知概述不同android版本上通知功能通知的结构创建通知1.创建渠道2.设置点击事件3.构造Notification对象并显示通知通知的操作通知渠道通知的级别前言最近一段时间写的都是android源码的文章,前几天在公司做了一个需求是关于前台服务的,在写前台服务的时候深入使用到了通知,今天就先写一篇文章总结一下通知的相关内容,后面有时间了在介绍一下前台服务的相关内容。通知概述...

2020-04-24 14:19:45 40261 17

原创 Android Binder系列之AIDL分析(3)

文章目录前言代码结构分析代码分析1.IMyAidlInterface2.IMyAidlInterface.Stub3.IMyAidlInterface.Stub.Proxy代码分离1.IMyAidlInterface2.IMyAidlInterfaceStubImpl3.IMyAidlInterfaceProxyImpl前言上一篇文章讲了AIDL的使用,我们知道AIDL是方便我们使用Binde...

2020-04-15 17:06:37 892

原创 Android Binder系列之IPC简介(1)

文章目录开篇IPC简介Linux中的IPC机制种类Android中的IPC机制IPC通信原理1.共享文件2.共享内存3.Binder开篇Binder是一个Android开发从初级进阶的必经之路,想来自己做Android开发也有两年多的时间了,尽然还没有研究过这一块的东西,真是惭愧。 从这篇文章开始会有一个系列对Binder进行分析,涵盖了Binder的使用、构成、原理以及Binder牵连的一些...

2020-04-14 17:05:17 1367

原创 Android Binder系列之AIDL使用(2)

文章目录开篇AIDL使用(不同应用间)server端1.创建 aidl 文件2.创建传输数据的实体类3.定义数据接口4.开启服务client端1.复制server的代码2.创建连接测试AIDL使用(同个应用内)1.创建应用内进程2.绑定服务测试断开监听总结开篇Binder是一个Android开发从初级进阶的必经之路,想来自己做Android开发也有两年多的时间了,尽然还没有研究过这一块的东西,...

2020-04-14 10:10:17 1059

原创 如何在 onCreate 中拿到 View 的宽度和高度?

文章目录前言原因getMeasuredWidthgetWidth分析方法1. View.post()2. IdleHandler3. ViewTreeObserver前言这篇文章会讲在 onCreate 中通过getWidth()和getMeasuredWidth()拿不到 View 的宽度和高度的原因,以及如何拿到的三种方法。如果想了解原理,建议在看这篇文章之前先看一下这篇文章Androi...

2020-03-30 14:21:04 1488

原创 Android源码分析之界面的构成和创建

文章目录前言界面的构成界面的创建onCreate-视图创建过程PhoneWindow创建WindowManager创建DecorView创建installDecor方法generateDecorgenerateLayoutonResume-视图显示过程总结前言对于大部分Android开发而言界面都是我们开发必不可少的环节,但是大部分人对界面的理解还只停留在id为content的根布局中,我们自...

2020-03-27 17:14:16 1273

原创 Android换肤总结

文章目录换肤方案Theme换肤Resouce换肤UiModeManager换肤总结换肤方案据我所知目前Android换肤有两种类型,静态换肤和动态换肤;静态换肤就是将所有的皮肤方案放到项目中,而动态换肤则就是从网络加载皮肤包动态切换;通常静态换肤是通过Theme实现,通过在项目中定义多套主题,使用setTheme方法切换的方式实现换肤;动态换肤是通过替换系统的Resouce动态加载下载到本...

2020-03-19 14:43:46 3271 1

原创 android—Resouce源码解析

前言在android开发过程中的Resouce是我们经常使用的,但是我们大多只是用它的getColor和getDrawable方法获取资源文件中的颜色和图片资源,其实在我们看不到的地方整个android系统的资源获取都是使用的它,最近出现的一些屏幕适配和动态换肤使用到了它,不知道你有没有这些疑问,Application的Resouce和Activity的有什么区别?每个不同Acitivty的Re...

2020-03-16 15:04:13 1481

原创 逆向某视频app(一)

本文为纯技术分享,文章内容不涉黄,适合对xposed有兴趣的读者目录前言xposed破解1.反编译apk2.分析代码前言有一段时间没写博客了,6月份的时候入职了一家做逆向的公司,很长一段时间都处在高度紧张的工作状态,连着两个月经常加班到10点,虽然有点辛苦,但是学到的东西更多,现在有一段时间要闲下来,趁着这个机会把学到的东西实践一下,破解一个视频app犒劳一下广大的程序员们。这次破解我会选择...

2019-10-12 17:21:01 17053 10

原创 Android——谷歌cameraview详解

Android的camera开发是经常能接触到的,但是由于多次迭代,camera的适配是一个很烦的事情,偶然的机会在github上看到google的一个关于camera的demo,这个demo兼容了各个版本的Android系统,谷歌出品必属精品。这篇文章就来研究一下这个demo。github地址这篇文章针对两类人,一类是想要直接使用camera,尽量快的完成开发,不关心内部原理的人;另一类就是...

2019-05-20 15:15:45 12173 3

原创 android安装包极致优化

1.矢量图

2019-03-18 13:45:18 1486

原创 android主流屏幕适配方案总结

1.概述android的碎片化导致了很多问题,屏幕适配算是其中比较头疼的一个问题了,想想你见过的安卓手机的尺寸和比例有多少种,本来应该说手机屏幕大就应该显示更多的内容,但是机型那么多,想要控制所有手机的显示效果是不现实的,所以只能是让页面在所有手机上尽可能的一致,也就是大屏幕拉伸,小屏幕缩放。Android适配最核心的问题有两个,其一,就是适配的效率,即把设计图转化为App界面的过程是否高效,...

2019-03-13 14:38:49 2864

原创 Android状态栏详解(全网最详)

2019-02-22 17:41:44 24330 10

原创 关于mvp view被销毁后present回调view造成的空指针问题

当我们在使用 MVP 的时候(应该其他场景也有这种情况),我们在请求网络的时候,网络还没返回,这个时候View 被销毁了,那么 View 为 Null,这个时候去调用 View 的方法,就会造成空指针异常,一般来说,我们可以在销毁的时候进行cancel请求,但是也有可能没有被cancel,在这种情况下,我们可以用判空的方法来进行处理,比如: if (view != ...

2018-12-24 10:46:15 1987

原创 使用CoordinatorLayout实现炫酷的效果

在android5.0的时候添加CoordinatorLayout、AppBarLayout、Toolbar、CollapsingToolbarLayout等等一系列的新控件,他们组合在一起可以实现很多非常nice的效果,目前国内很多app都使用了这些效果,下面我们来逐一介绍这些控件。CoordinatorLayout又名协调者布局,它是support.design包中的控件,所以使用的时候要...

2018-12-20 15:10:34 19913 6

原创 关于五险一金的一些常识

五险一金是指用人单位给予劳动者的几种保障性待遇的合称,包括养老保险、医疗保险、失业保险、工伤保险和生育保险,及住房公积金。 我们常说的社保就是五险,五险是国家规定必须交的,而公积金不是强制要求的。下面我们讲重点怎么交?交多少?五险(社保)社保总共又五个,其中最重要的交的最多的是“养老保险”、“医疗保险”,每个地区都会有一个缴费比例,拿2018年北京为例: 养老保险:公司缴19%,个...

2018-09-13 16:17:23 2331

原创 Android中常见的内存泄露及解决方法(持续更新)

内存泄露的原因内存泄露是指不在需要的对象仍然被引用不能被GC回收释放,这句话你可能看到过不止一遍了,下面我们来深入研究一下这句话。 首先了解一下两个名词:GC: 垃圾回收器,会自动回收不在被引用的内存数据GC Roots:不能被回收的对象(这里的解释不是很好,往下看就明白了)下面我们来看一张图: GC Roots持有的对象都不能被垃圾回收器回收,所以这里的Object D...

2018-09-01 17:46:46 1087

原创 Java设计模式之动态代理模式原理分析

有一段时间没有写博客了,工作了就真的没有什么时间写了,主要是上了一天的班晚上回家什么都不想做,现在有了一点时间就打算写几篇博客,今天主要讲一下代理模式中的动态代理模式,记得以前在学校的时候学spring里面的Aop就看过这个模式,但是没有详细了解其中的原理,今天就详细看一下动态代理模式的原理。...

2018-08-10 17:33:14 1156

原创 好用的手机投屏电脑软件

这篇博客主要介绍一下好用的投屏软件,废话不多说直接上干货ApowerMirror非常流畅的一款投屏软件,有包括免费版的三个版本,免费版的画质稍差,但流畅性惊人AirDroid也是非常不错的一款软件TC Games、Total Control:Total Control是我个人感觉最好的一款,支持多个设备同时投屏,画质很不错但是稍稍有点卡顿,TC Games是基于Total Control...

2018-04-19 17:13:28 9108

原创 spring——(7)Spring中的AOP

在java中oop是面向对象编程,这个从我们刚接触java的时候就知道了,今天我们要说的是aop面向切面的编程,其实关于aop的具体思想我也不能完整的表达出来,对于初学者来说只需要知道他是代理模式的一种实现。AOP核心概念1、横切关注点对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点2、切面(aspect)类是对物体特征的抽象,切面就是对横切关注点的抽象3、连接点(joinpoint)

2018-01-25 22:54:40 176

原创 spring——(6)基于注解的配置

我们前面在使用Spring的时候每个类都要在xml文件中配置,在java5中新增了注解,于是Spring在2.5的版本中加入了注解,使用注解我们可以直接在java代码中配置Spring,而不需要在xml中配置。 首先看一下Spring中常见的注解有哪些:@Configuration把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean。@Sc

2018-01-19 20:42:57 189

原创 spring——(5)Resource

在日常程序开发中,处理外部资源是很繁琐的事情,我们可能需要处理URL资源、File资源资源、ClassPath相关资源、服务器相关资源(JBoss AS 5.x上的VFS资源)等等很多资源。因此处理这些资源需要使用不同的接口,这就增加了我们系统的复杂性;而且处理这些资源步骤都是类似的(打开资源、读取资源、关闭资源),因此如果能抽象出一个统一的接口来对这些底层资源进行统一访问,是不是很方便,而且使我们

2017-12-22 17:58:22 247

原创 spring——(4)自动装配

前面我们讲Di依赖注入的时候介绍了在xml文件中配置参数注入,Spring 容器可以自动装配相互协作的 bean 之间的关系,这有助于减少编写一个大的基于 Spring 的应用程序的 XML 配置的数量。 下列自动装配模式,它们可用于指示 Spring 容器为来使用自动装配进行依赖注入。你可以使用 元素的 autowire 属性为一个 bean 定义指定自动装配模式。 Tables Are

2017-12-22 14:22:05 452

原创 spring——(3)Aware接口

Aware接口到底是什么东西? 其实总结起来就是Spring提供给我们的可以在类的内部获取Spring提供的资源的接口。 首先介绍几个Spring所提供的Aware接口: Tables Are ApplicationContextAware 当前的application context从而调用容器的服务 BeanNameAware 获得到容器中Bean的名称 BeanF

2017-12-22 11:30:40 232

原创 spring——(2)bean的配置项

属性 描述 class 这个属性是强制性的,并且指定用来创建 bean 的 bean 类。 name 这个属性指定唯一的 bean 标识符。在基于 XML 的配置元数据中,你可以使用 ID 和/或 name 属性来指定 bean 标识符。 scope 这个属性指定由特定的 bean 定义创建的对象的作用域 constructor-arg 它是用来注入依赖关系的,上一

2017-12-21 22:32:06 271

原创 spring——(1)ioc容器和Di依赖注入

今天开始spring的系列文章,由于我也是边学边写,如果有不对的地方还请指出来,大家一起学习共同进步。 在进行Spring的第一篇讲解前首先搭建一下环境,这里有一个链接供大家参考:http://www.yiibai.com/spring/spring-tutorial-for-beginners.html。在写这篇文章之前我看了很多视频和博客,他们首先会将一大堆理论,我看的是云里雾里,其实我感觉

2017-12-21 19:22:56 234

原创 android中dp和px的关系

关于android的dp和px的关系是我刚开始学习android的第一个知识点,不知不觉学安卓也有一年了,但是偶然间我发现我理解的dp和px的关系一直是错的,真的是有一点搞笑,今天特意写一篇博客纪念一下这个我理解错一年的知识点。 dp和px之间又有一个dpi作为桥梁,我们分别看看这三个属性:px:像素点,比如1080*1920的屏幕,就是宽1080个像素点和高1920个像素点。dpi(也叫pp

2017-12-08 18:12:02 20907 3

原创 java多线程之ThreadLocal源码分析

什么是ThreadLocal? 关于ThreadLocal的知识网上有很多,但参差不齐很片面,看了很多博客后发现有一篇写的很全面客观,贴出来大家可以自行观看:http://www.iteye.com/topic/103804 下面讲一下我自己的理解:线程本地存储区(Thread Local Storage,简称为TLS),每个线程都有自己的私有的本地存储区域,不同线程之间彼此不能访问对方的TL

2017-12-05 09:13:20 849

原创 android热更新之Bugly

有一段时间没有更新博客了,主要是快毕业了,出来实习找工作,现在在一家公司做安卓,今天是上班的第三天,前两天了解了一下项目,现在项目需要增加热更新方案,于是我研究了一下市场上的开源方案,今天注重讲一下腾讯的bugly。(本文只是对bugly的大致流程进行梳理,并对一些常见的错误进行解释,适合看过bugly官方文档但是没有集成成功的人) 首先说一下市场上常见的几种开源方案:Tinker、 Qzone、

2017-11-27 17:49:17 920

原创 Springmvc——(1)环境搭建

作为一个合格的android开发工程师,服务器开发是一项必须掌握的技能,现在到各大应用商店看看,哪里还有单机的应用。所以从今天开始我打算学习服务器的ssm框架,首先就是springmvc,当然这一系列的博客适用于有一定基础的人,没有基础谁会上来就学框架呢。不废话了,首先来搭建springmvc的框架吧,我们使用eclipse作为开发工具。1.创建Maven项目在eclipse中创建一个Maven项目

2017-10-28 17:58:46 311

slidingMenu

2016-12-11

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除