自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wyman的博客

己所不欲,勿施于人。

  • 博客(45)
  • 资源 (3)
  • 收藏
  • 关注

转载 面向对象设计原则

美的东西比丑的东西创建起来更廉价,也更快捷,设计一个软件不关要追求代码的优雅问题,更关乎生产成本等。面向对象的设计原则:1、单一职责原则:定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责...

2019-12-05 14:49:48 264

原创 Android系统启动流程

1.init进程启动(用户空间第一个进程)总结:a.创建和挂在启动所需的文件目录b.初始化和启动属性服务c.解析init.rc配置文件并启动Zygote进程2.Zygote进程启动过程(创建应用程序进程和SystemServer进程)Zygote的main方法:1.创建一个server端的socket。2.预加载类和资源3.启动SystemServer进程4.等待AMS请...

2019-02-14 15:46:31 261

原创 Android手机无线调试

一、啥是无线调试?为啥需要无线调试平时我们调试APP的时候,会将手机连接到USB数据线,然后再将数据线连接到电脑上。但是,由于长期插拔或者USB线材材质的问题,经常会出现无法连接的问题;而且,通常公司内会有手机多而线不够用的问题;还有就是,桌面上一堆手机一堆线是不是感觉很乱?此时,我们就需要用到无线调试了。那么,什么是无线调试呢?这还用问,就是没有线呗——手机和电脑连接的时候不需要用数据线...

2018-09-27 15:02:14 9606 1

原创 Android基础架构设计

最近公司因为发展,会新开几个项目,领导让整理下基础框架好统一使用,也方便其他人员熟悉代码。因此,再次记录一下。1.1基本结构基本架构我先用现在市面普及和成熟的mvp(model-view-presenter),我的理念是职责分层,高内聚低耦合。MVP模式的核心思想:相对于我们大家以前熟知的mvc来说,mvp把activity中的UI逻辑抽象成View接口,吧业务逻辑抽象成pre...

2018-08-27 18:20:50 1528 2

原创 解决android studio引用远程仓库下载慢(JCenter下载慢)

今天在下载依赖包的时候总是time out,然后在网上找到一个很nice的方法,记录一下: 第一种方法使用开源中国的maven库阿里云的(速度飞快):http://maven.aliyun.com/nexus/content/groups/public/替换项目根目录下build.gradle中的repositories {     jcenter()}为:re...

2018-08-22 18:57:55 2868

转载 Android屏幕适配最优方案

一、今日头条屏幕适配方案今日头条屏幕适配方案的核心原理在于,根据以下公式算出density当前设备屏幕总宽度(单位为像素)/ 设计图总宽度(单位为 dp) = densitydensity的意思就是1 dp占当前设备多少像素为什么要算出density,这和屏幕适配有什么关系呢?public static float applyDimension(int unit, ...

2018-08-22 10:43:50 18448 5

原创 Java 运行时的内存划分

程序计数器记录当前线程所执行的字节码行号,用于获取下一条执行的字节码。当多线程运行时,每个线程切换后需要知道上一次所运行的状态、位置。由此也可以看出程序计数器是每个线程私有的。虚拟机栈虚拟机栈由一个一个的栈帧组成,栈帧是在每一个方法调用时产生的。每一个栈帧由局部变量区、操作数栈等组成。每创建一个栈帧压栈,当一个方法执行完毕之后则出栈。如果出现方法递归调用出现死循环的话...

2018-08-16 14:13:03 145

原创 Android组件化开发

 1、为什么要项目组件化随着APP版本不断的迭代,新功能的不断增加,业务也会变的越来越复杂,APP业务模块的数量有可能还会继续增加,而且每个模块的代码也变的越来越多,这样发展下去单一工程下的APP架构势必会影响开发效率,增加项目的维护成本,每个工程师都要熟悉如此之多的代码,将很难进行多人协作开发,而且Android项目在编译代码的时候电脑会非常卡,又因为单一工程下代码耦合严重,每修改一处代...

2018-07-20 15:14:23 1296

原创 阿里热修复SophixStubApplication中java.lang.ClassNotFoundException引起的闪退

 关于怎么集成Sophix,官方文档写的很清楚,这边就不班门弄斧了。此次记录下关于更新完毕后打开应用崩溃的问题:07-18 18:14:29.941 12173-12173/? E/Sophix.PatchManager:  callRealAppAttach    java.lang.ClassNotFoundException        at com.taobao.sophi...

2018-07-18 18:24:21 2351

转载 Binder学习指南

毫不夸张地说,Binder是Android系统中最重要的特性之一;正如其名“粘合剂”所喻,它是系统间各个组件的桥梁,Android系统的开放式设计也很大程度上得益于这种及其方便的跨进程通信机制。理解Binder对于理解整个Android系统有着非常重要的作用,Android系统的四大组件,AMS,PMS等系统服务无一不与Binder挂钩;如果对Binder不甚了解,那么就很难了解这些系统机制,从而...

2018-07-11 10:14:01 140

转载 TCP的三次握手与四次挥手

背景描述我们知道网络层,可以实现两个主机之间的通信。但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在交换数据。IP协议虽然能把数据报文送到目的主机,但是并没有交付给主机的具体应用进程。而端到端的通信才应该是应用进程之间的通信。UDP,在传送数据前不需要先建立连接,远地的主机在收到UDP报文后也不需要给出任何确认。虽然UDP不提供可靠交付,...

2018-07-11 10:10:35 134

转载 http和https那些事

Http是我们经常打交道的网络应用层协议,它的重要性可能不需要再强调。但是实际上很多人,包括我自己可能对http了解的并不够深。本文就我自己的学习心得,分享一下我认为需要知道的缓存所涉及到的相关知识点。Http报文首先我们来点基础的,看看http报文具体的格式。http报文可以分为请求报文和响应报文,格式大同小异。主要分为三个部分:起始行首部主体请求报文格式:<method> <...

2018-07-11 10:04:46 628

转载 反射

一、什么是反射:反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。其中LEAD/LEAD++ 、OpenC++ 、MetaXa和OpenJava等就是基于反射机制的语言。最近,反射机制也被应用到了视窗系统、操作...

2018-07-11 09:55:43 208

原创 APK的加载流程

文章目录我们前面说过APK可以分为代码与资源两部分,那么在加载APK时也会涉及代码的加载和资源的加载,代码的加载事实上对应的就是Android应用进程的创建流程,关于这一块的内容我们在文章01Android进程框架:进程的创建、启动与调度流程已经分析过,本篇文章 我们着重来分析资源的加载流程。我们知道在代码中我们通常会通过getResource()去获取Resources对象,Resource对象...

2018-04-10 14:52:38 2264 1

原创 APK的安装流程

文章目录我们来思考一下Android系统是如何安装一个APK文件的,从直观的流程上,当我们点击一个APK文件或者从应用商店下载一个APK文件,会弹起一个安装对话框,点击安装就可以安装应用。那么这里面的流程是什么样的呢?首先很容易想到的是,Android根据文件类型MimeType来判断是否弹起安装页面,就行点击一个视频会调起视频播放器一样。Android系统常见的文件类型如下所示:add("app...

2018-04-10 14:47:01 13713

原创 APK的打包流程

文章目录一 资源的编译和打包二 代码的编译和打包Android的包文件APK分为两个部分:代码和资源,所以打包方面也分为资源打包和代码打包两个方面,这篇文章就来分析资源和代码的编译打包原理。APK整体的的打包流程如下图所示:具体说来:通过AAPT工具进行资源文件(包括AndroidManifest.xml、布局文件、各种xml资源等)的打包,生成R.java文件。通过AIDL工具处理AIDL文件,...

2018-04-10 14:44:22 1783

原创 Android系统设计原则与设计模式

什么是设计原则?1. 单一职责原则(SRP) 定义:就一个类而言,应该仅有一个引起它变化的原因。 从这句定义我们很难理解它的含义,通俗讲就是我们不要让一个类承担过多的职责。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到破坏。 比如我经常看到一些Android开发在Activity中...

2018-03-20 10:38:50 1642

原创 Android系统设计概述

Android系统架构图Android系统架构图从上到下依次分为六层:应用框架层进程通信层系统服务层Android运行时层硬件抽象层Linux内核层

2018-03-19 15:06:16 1083

原创 fragment嵌套fragment显示数据

当碰到多个fragment嵌套需要显示数据的时候,fragmentManager需要使用getChildFragmentManager()来获得,否侧会出现数据显示不出来的情况;

2018-03-19 14:28:42 666

转载 Android事件分发机制完全解析,带你从源码的角度彻底理解(下)

原文链接:http://blog.csdn.net/guolin_blog/article/details/9153761记得在前面的文章中,我带大家一起从源码的角度分析了Android中View的事件分发机制,相信阅读过的朋友对View的事件分发已经有比较深刻的理解了。还未阅读过的朋友,请先参考 Android事件分发机制完全解析,带你从源码的角度彻底理解(上) 。那么今天我们将继续上次未完成的...

2018-03-19 14:24:52 155

转载 Android事件分发机制完全解析,带你从源码的角度彻底理解(上)

原文链接:http://blog.csdn.net/guolin_blog/article/details/9097463其实我一直准备写一篇关于Android事件分发机制的文章,从我的第一篇博客开始,就零零散散在好多地方使用到了Android事件分发的知识。也有好多朋友问过我各种问题,比如:onTouch和onTouchEvent有什么区别,又该如何使用?为什么给ListView引入了一个滑动菜...

2018-03-19 14:23:49 141

转载 Android应用图标微技巧,8.0系统中应用图标的适配

原文链接:http://blog.csdn.net/guolin_blog/article/details/79417483大家好,2018年的第一篇文章到的稍微有点迟,也是因为在上一个Glide系列结束之后一直还没想到什么好的新题材。现在已经进入了2018年,Android 8.0系统也逐渐开始普及起来了。三星今年推出的最新旗舰机Galaxy S9已经搭载了Android 8.0系统,紧接着小米...

2018-03-19 14:21:03 241

原创 解决ScrollView嵌套viewPager中嵌套listView滑动事件冲突问题(水平方向)

我们在开发中经常会碰到view滑动冲突的情况。滑动冲突的解决办法就两种:1.外部拦截法:是指在点击事件先经过父容器的拦截处理,如果父容器需要处理此事件就进行拦截,如果不需要此事件就不拦截,这样就可以解决滑动冲突的问题,外部拦截法需要重写父容器的onInterceptTouchEvent()方法,在内部做相应拦截处理。2.内部拦截法:是指点击事件先经过子View处理,如果子view需要次事件就直接消...

2018-03-14 18:36:09 2188 2

原创 ScrollView起始位置不是最顶部的解决办法

最近遇到了打开带有ScrollView的页面布局默认起始位置不是最顶部的情况,最后发现问题是因为ScrollView内部嵌套了listView,只需要设置listView获取焦点为false即可。需要在代码中设置:listView.setFocusable(false);如果内部嵌套的是gridview,recycleView,也是同样的处理方法。PS:网上还查到说可以设置myScrollView...

2018-03-06 16:15:11 1514

原创 spring boot 热部署

一.Java中热部署与热加载的联系a.不重启服务器编译/部署项目b.基于Java的类加载器实现二、热部署与热加载的区别部署方式1.热部署在服务器运行时重新部署项目2.热加载在运行时重新加载class实现原理1.热部署直接重新加载整个应用2.热加载在运行时重新加载class使用场景1.热部署更多的是在生产环境使用2.热加载更多的是在开发环境

2018-01-03 17:00:07 259

转载 python之List和Tuple类型

一.list:内置的一种数据类型是列表,是一种有序的集合,可以随时添加和删除其中的元素1.构造list非常简单,直接使用[]把list的所有元素括起来,就是一个list对象eg: a=['s','b',c'']* 由于python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型。eg: L=['a',100,TRUE]* 倒序访问 :L[-1]=T

2017-12-15 14:12:00 528

原创 python变量和数据类型

最近python很火,趁空学习下,做个笔记! 一.python中的数据类型1.整数:1,100,-100...2.浮点数: 2.1,2.22...3.字符串:'' ''或' '4.布尔值 :True ,false5.空值:None二.raw字符串和多行字符串如果一个字符串包含很多转义字符,对每一个字符串都进行转义会很麻烦,为了避免,我们可以在字符串前面加个前

2017-12-15 11:50:43 293

原创 Unable to get provider android.support.v4.content.FileProvider

今天在项目中碰到一个很棘手的问题,在一款api 19的oppo 手机上运行部了项目,一直报错 ,如下: java.lang.RuntimeException: Unable to get provider android.support.v4.content.FileProvider: java.lang.ClassNotFoundException: Didn't find class "a

2017-11-16 17:16:56 12924 2

转载 Android自定义View的实现方法,带你一步步深入了解View(四)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17357967不知不觉中,带你一步步深入了解View系列的文章已经写到第四篇了,回顾一下,我们一共学习了LayoutInflater的原理分析、视图的绘制流程、视图的状态及重绘等知识,算是把View中很多重要的知识点都涉及到了。如果你还没有看过我前面的几篇文章,建

2017-10-14 11:28:34 196

转载 Android视图状态及重绘流程分析,带你一步步深入了解View(三)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17045157在前面一篇文章中,我带着大家一起从源码的层面上分析了视图的绘制流程,了解了视图绘制流程中onMeasure、onLayout、onDraw这三个最重要步骤的工作原理,那么今天我们将继续对View进行深入探究,学习一下视图状态以及重绘方面的知识。如果你

2017-10-14 11:26:48 164

转载 Android视图绘制流程完全解析,带你一步步深入了解View(二)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/16330267在上一篇文章中,我带着大家一起剖析了一下LayoutInflater的工作原理,可以算是对View进行深入了解的第一步吧。那么本篇文章中,我们将继续对View进行深入探究,看一看它的绘制流程到底是什么样的。如果你还没有看过我的上一篇文章,可以先去阅读

2017-10-14 11:25:38 160

转载 Android LayoutInflater原理分析,带你一步步深入了解View(一)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/12921889有段时间没写博客了,感觉都有些生疏了呢。最近繁忙的工作终于告一段落,又有时间写文章了,接下来还会继续坚持每一周篇的节奏。有不少朋友跟我反应,都希望我可以写一篇关于View的文章,讲一讲View的工作原理以及自定义View的方法。没

2017-10-14 11:24:44 143

转载 Android异步消息处理机制完全解析,带你从源码的角度彻底理解

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9991569之前也是由于周末通宵看TI3比赛,一直没找到时间写博客,导致已经有好久没更新了。惭愧!后面还会恢复进度,尽量保证每周都写吧。这里也是先恭喜一下来自瑞典的Alliance战队夺得了TI3的冠军,希望明年中国战队能够虎起!开始进入正

2017-10-14 11:23:17 169

转载 Android事件分发机制完全解析,带你从源码的角度彻底理解(下)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9153761记得在前面的文章中,我带大家一起从源码的角度分析了Android中View的事件分发机制,相信阅读过的朋友对View的事件分发已经有比较深刻的理解了。还未阅读过的朋友,请先参考 Android事件分发机制完全解析,带你从源码的角

2017-10-14 11:22:08 174

转载 Android事件分发机制完全解析,带你从源码的角度彻底理解(上)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9097463其实我一直准备写一篇关于Android事件分发机制的文章,从我的第一篇博客开始,就零零散散在好多地方使用到了Android事件分发的知识。也有好多朋友问过我各种问题,比如:onTouch和onTouchEvent有什么区别,又该如何使用?为什么给L

2017-10-14 11:20:41 137

转载 Android Fragment完全解析,关于碎片你所需知道的一切

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8881711我们都知道,Android上的界面展示都是通过Activity实现的,Activity实在是太常用了,我相信大家都已经非常熟悉了,这里就不再赘述。但是Activity也有它的局限性,同样的界面在手机上显示可能很好看,在平板上就未必了,因为平

2017-10-14 11:16:34 132

转载 Android官方架构组件介绍之LifeCycle

为了帮助开发着打造一款优秀的APP,Google可谓费尽心力,推出了各种诸如MVP,MVVM等等项目架构的思路,帮助开发者更加高效的开发,尽管这样,Google还是接着推出了一个新的项目架构,以便给予开发者更多的选择,至于这种架构思路和MVP等框架的优劣,各位看完文章或许自有定论。

2017-08-08 11:38:56 941

原创 Execution failed for task ':app:transformNative_libsWithStripDebugSymbolForRelease'.

最近在项目中突然碰到这个问题,查了好多资料,感觉最有用的就是这个方法,做个笔记!Error:Execution failed for task ':app:transformNative_libsWithStripDebugSymbolForRelease'.> Java.lang.NullPointerException (no error message)在对应项目的 buil

2017-04-01 16:05:09 9420

原创 Genymotion启动失败

最近在使用genymotion的时候总是不能正常启动,一直报错:the virtual device got no ip address,the virtualbox dhcp server has not assigned an ip address to the virtual device尝试了很多方法:1.安装官网打包好的VBox和Genymotion2.独立安装最新的VBox

2016-09-28 14:27:14 732

原创 如何让其他软件能调起自己写的视频播放器(附:android5.0系统源码)

如何让其他软件能调起自己写的播放器

2016-09-23 14:50:05 3339

indicator指示器

viewpager加tab,indicator指示器,注释详细,一看就懂,希望能帮到有需要朋友

2016-04-19

topbar工具

简单封装,很实用topbar 注意:引入命名空间,包名是主项目的包名 xmlns:custom="http://schemas.android.com/apk/res-auto"

2016-01-21

android开发必备工具类

android开发必备工具类,提高开发效率

2016-01-21

空空如也

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

TA关注的人

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