自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

叫我帅阿蒙

Android开发程序员一枚,欢迎大家共同探讨。

  • 博客(22)
  • 资源 (1)
  • 收藏
  • 关注

原创 【协程 一】认识协程

协程笔记1 协程是如何工作的,和线程的区别进程进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对比较稳定安全。线程线程是进程的一个实体,是CPU调度和分派的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但

2021-09-10 16:58:41 199

原创 Android 常见启动优化整理

启动流程:点击app - 启动app 加载空白window 创建进程 创建application 启动主线程(ActivityThread) 创建Activity 加载布局 布置屏幕 首帧绘制其中1-3,5,6,位系统行为,一般情况下我们无法干预针对4可以采用如下策略:1. 延迟初始化和异步初始化必须在主线程 可以延迟 建议使用idleHandler,在主线程空闲时间进行初始化 不可以延迟 直接初始化 可以在子线程 子线程不可延迟初

2021-07-22 18:44:47 239 2

原创 【能看懂系列】你能看懂的TCP,IP协议

TCP/IP作为面试必问问题之一,很有必要深入理解下。官方解释TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。通常可以分为四个层次。应用层:应用层是TCP/IP协议的第一层,是直接为应用进程提供服务的。对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了SMTP协议、万维网应用使用了HTTP协议、远程登录服务应用使用了有TELNET协议。应用

2021-06-30 19:19:59 691 2

原创 为什么Application不能作为Dialog的Context

结论:用activity作为context参数的dialog创建的windowManager是有token的,用service和application作为参数的windowManager的是没有token,所以会崩溃,这样做的好处是防止当你已经关闭页面了,或者已经打开其他app了,这个时候弹出一个操作弹窗,防止误操作。源码分析首先我们看dialog的构造方法的代码片段 mWindowManager = (WindowManager) context.getSystemService(C

2021-03-31 12:15:08 1798 3

原创 你能看的懂的Http三次握手和四次挥手

面试经常碰到这样的问题:简述下Http三次握手和四次挥手为什么是三次握手,四次挥手?两次握手,三次挥手可以吗?正常回答三次握手客户端(client)发送一个请求,向服务端(server)表示须要连接。然后等待服务端的回应。服务端接收到这种请求包后,查看是否在接听的是指定的port,如果是,向我们表示,服务端连接已经准备好了,等待我们的确认。客户端收到服务端的反馈后,发送确认建立连接的信息给服务端。四次挥手:TCP客户端发送一个FIN。用来关闭客户到server的数据传送。ser

2021-02-22 11:18:19 325

原创 handler源码学习(4) — MessageQueue

Handler是面试必问系列问题之一。本系列将从初学者的视角分析面试中常见的问题。handler源码学习(1) — Handlerhandler源码学习(2) — Messagehandler源码学习(3) — Looperhandler源码学习(4) — MessageQueue本篇学习MessageQueue,主要解决以下几个问题如何入队列如何判断队列是否包含某个消息如何移除消息如何取消息如何实现同步屏障入队列还记第一篇文章讲到无论是sendMessage还是postMess

2021-01-05 14:42:46 207

原创 handler源码学习(3) — Looper

Handler是面试必问系列问题之一。本系列将从初学者的视角分析面试中常见的问题。handler源码学习(1) — Handlerhandler源码学习(2) — Messagehandler源码学习(3) — Looperhandler源码学习(4) — MessageQueue这里只讲解几个重要方法。其他方法(isCurrentThread(),myLooper()…)很简单就不讲解了。prepare() static final ThreadLocal<Looper>

2020-12-30 17:36:09 161

原创 handler源码学习(2) — Message

这是Handler源码学习第二篇,后续还有handler源码学习(1) — Handlerhandler源码学习(2) — Messagehandler源码学习(3) — MessageQueuehandler源码学习(4) — Loopermessage相对来说比较简单,大部门代码都是对一些属性值的赋值和获取以及Parcelable的实现。这里我们主要看一下几个方法 public Message() { } ///// 1 public static M

2020-12-29 17:46:14 101

原创 handler源码学习(1) — Handler

马上年底了,年初制定的计划好多都没完成。这一年写了很多东西。但是又都感觉深度不够,所以没有发出来。最近整理了下,准备慢慢发出来。进入正文。Handler是面试必问系列问题之一。本系列将从初学者的视角分析面试中常见的问题。1. 创建Handler1.1 首先看构造方法 //1 public Handler() { this(null, false); } //2 public Handler(@Nullable Callback callback){

2020-12-29 17:38:21 210

原创 深入理解Glide(二)load(xxx)

文章基于Glide 4.9.0上一篇我们了解到Glide.with返回的是一个RequestManager。这篇我们来接着看Glide.with(xxx).load(xxx)的load(xxx)方法。 public RequestBuilder<Drawable> load(@Nullable Bitmap bitmap) { return asDrawable().load(bitmap); } public RequestBuilder<Drawable&gt

2020-12-08 10:56:56 613

原创 深入理解Glide(一)with(xxx)

文章基于Glide 4.9.0Glide.with(xxx)Glide.with(@NonNull Context context){ return getRetriever(context).get(context);} @NonNull public static RequestManager with(@NonNull Activity activity) { return getRetriever(activity).get(activity); }

2020-12-08 10:48:51 1098

原创 2020业余时间自我提升计划

2018年是自我提升最大的一年。无论是技术,还是思想都进步很多。2019年,虽然也进步了。但是自我感觉并不是很满意。思来想去,感觉还是自己没有一个明确的目标,所以今年决定制定自己的自我提升计划。项目计划个人项目(AndUI)自定义View系统适配和优化高仿UI效果工具类功能展示dialog权限图片加载其他工具类公司项目小伙伴提交的代码,要仔细阅读一遍完善学习当...

2020-03-13 16:37:03 440

原创 Android 关于内存溢出的一些误会

从哪些情况导致内存溢出说起说到Android的内存溢出,一般人都会说到以下几点内存泄漏不用的图片没有GC大图加载加载大量的图片创建大量的线程…那么真的是这样吗?是不是我不加载大图就不会内存溢出?是不是我不加载大量图片就不会内存溢出?不创建大量线程就不会内存溢出?…答案是否定的。不信你试试下面这个代码。List<String> list = new ArrayL...

2020-01-02 17:36:33 1462

原创 Android:一般什么情况会导致内存泄漏?

最近在和小伙伴一起维护一个github项目,https://github.com/Moosphan/Android-Daily-Interview。每天出一道面试题。感兴趣的可以点进去看看。最近要开始整理答案。所以顺手也在这里发布下自己写的相关面试题的答案。正文开始什么是内存泄漏之前看大家的回答,好多把内存泄漏和内存溢出的概念搞混的。我这里简单解释下。Android给每个app分配了一定的...

2019-08-21 15:03:09 473

原创 Activity 与 Fragment 之间常见的几种通信方式?

开始介绍方法之前,先借用之前lx36301766 写的答案里的一句话,我个人觉得写的很到位:说到底就是两个普通的JAVA对象相互都持有对方的引用,直接回调就成,哪还需要什么别的通信方式,很简单的问题别搞复杂了大家都知道java是面向对象的编程语言。只要拿到对象,想做什么操作其实很简单。好开始正文。从两个方面开始说Activity与Fragment通信Fragemnt与Activit...

2019-08-09 09:15:16 1350

原创 关于ArrayList动态扩容

学习目标:初始化时元素个数是多少如何扩容先来看看构造方法无参数构造方法 /** * Constructs an empty list with an initial capacity of ten. */ public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELE...

2019-03-15 14:58:06 125

原创 一篇文章搞懂Handler发消息时,Handler,MessageQueue,Looper都做了些什么

学习思路构造方法发送消息入队列,进入消息池处理消息构造方法首先看构造方法,一共七个构造方法,但是最后都是调用了两个方法,分别是Handler(Callback callback, boolean async)和Handler(Looper looper, Callback callback, boolean async)。然后来分析这两个方法 public Handle...

2019-03-14 16:24:21 447

原创 带你打造属于自己的TabLayout(ViewPagerIndicator)

viewpagerIndicator先看效果图先说下为什么写这个,Android出了design库之后,基本上就告别ViewPagerIndicator了,但是因为我们有个严格的产品➕设计,所以好多时候用系统原来的样式并不能满足我们的需求。之前是用第三方,但是用来用去,总是有一些不能满足的地方,可扩展性不是很高。于是有了这篇文章,进入正题。用法目前只支持Scroll类型的,不支持平分屏幕...

2019-03-12 19:14:40 152

原创 Android 单选图片,一个dialog全部搞定

一:为什么写这个文章?相信大家对图片选择已经不陌生了,大家基本一直都在用。但是假如你在选择图片的时候遇到,反应比较慢。Android 7.0选择图片时闪退的问题。你不妨花几分钟往下看下。随着相机像素越来越高,手机拍照获取到的照片越来越大,这就需要我们在选择照片时处理好内存溢出的问题。于是出现了选择照片时保存图片的本地路径,上传时在转换为需要的格式。但是,安卓7.0在选择图片时获取到的路径不

2017-04-11 15:06:47 1917

原创 Mac下Android Studio git使用test失败

最近一段时间公司给配了台mac ,于是开发由windows转mac了。直接进入正题吧。报错信息xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xc

2017-03-10 11:58:58 803

原创 图片等比例缩放

好多时候我们设置了宽度全屏,高度wrap_content这个属性之后这个属性之后,图片并不会实现等比例的缩放,那么我们就可以在ImageView里添加android:adjustViewBounds="true"这条属性。效果。。谁用谁知道

2016-07-12 11:41:09 490

原创 可以滑动的视频播放器(VideoView)

项目中经常用到一个视频播放器下面有一个评论列表,或者有一些其他的列表。一般情况下,安卓不鼓励视频滚动的。但是偶尔遇到这种要求又不得不做。很不幸我就遇到了。round1楼主把VideoView放到了ScrollView,同时把VideoView的高设置成了wrap_content,问题出现了。VideoView不可见了。后来才发现VideoView必须设置成固定宽高才会出现。round2

2016-07-12 10:59:33 5207 1

Android 单图片选择,一个dialog全搞定

Android 7.0单图片选择,只需传入请求码,是否裁剪,以及图片的imageView即可显示,并获取到图片的本地路径

2017-04-11

空空如也

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

TA关注的人

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