Android
文章平均质量分 78
叫我帅阿蒙
这个作者很懒,什么都没留下…
展开
-
【协程 一】认识协程
协程笔记1 协程是如何工作的,和线程的区别进程进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对比较稳定安全。线程线程是进程的一个实体,是CPU调度和分派的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但原创 2021-09-10 16:58:41 · 223 阅读 · 0 评论 -
Android 常见启动优化整理
启动流程:点击app - 启动app 加载空白window 创建进程 创建application 启动主线程(ActivityThread) 创建Activity 加载布局 布置屏幕 首帧绘制其中1-3,5,6,位系统行为,一般情况下我们无法干预针对4可以采用如下策略:1. 延迟初始化和异步初始化必须在主线程 可以延迟 建议使用idleHandler,在主线程空闲时间进行初始化 不可以延迟 直接初始化 可以在子线程 子线程不可延迟初原创 2021-07-22 18:44:47 · 310 阅读 · 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 · 2491 阅读 · 3 评论 -
你能看的懂的Http三次握手和四次挥手
面试经常碰到这样的问题:简述下Http三次握手和四次挥手为什么是三次握手,四次挥手?两次握手,三次挥手可以吗?正常回答三次握手客户端(client)发送一个请求,向服务端(server)表示须要连接。然后等待服务端的回应。服务端接收到这种请求包后,查看是否在接听的是指定的port,如果是,向我们表示,服务端连接已经准备好了,等待我们的确认。客户端收到服务端的反馈后,发送确认建立连接的信息给服务端。四次挥手:TCP客户端发送一个FIN。用来关闭客户到server的数据传送。ser原创 2021-02-22 11:18:19 · 365 阅读 · 0 评论 -
handler源码学习(4) — MessageQueue
Handler是面试必问系列问题之一。本系列将从初学者的视角分析面试中常见的问题。handler源码学习(1) — Handlerhandler源码学习(2) — Messagehandler源码学习(3) — Looperhandler源码学习(4) — MessageQueue本篇学习MessageQueue,主要解决以下几个问题如何入队列如何判断队列是否包含某个消息如何移除消息如何取消息如何实现同步屏障入队列还记第一篇文章讲到无论是sendMessage还是postMess原创 2021-01-05 14:42:46 · 242 阅读 · 0 评论 -
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 · 175 阅读 · 0 评论 -
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 · 134 阅读 · 0 评论 -
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 · 243 阅读 · 0 评论 -
深入理解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>原创 2020-12-08 10:56:56 · 732 阅读 · 0 评论 -
深入理解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 · 1126 阅读 · 0 评论 -
Android 关于内存溢出的一些误会
从哪些情况导致内存溢出说起说到Android的内存溢出,一般人都会说到以下几点内存泄漏不用的图片没有GC大图加载加载大量的图片创建大量的线程…那么真的是这样吗?是不是我不加载大图就不会内存溢出?是不是我不加载大量图片就不会内存溢出?不创建大量线程就不会内存溢出?…答案是否定的。不信你试试下面这个代码。List<String> list = new ArrayL...原创 2020-01-02 17:36:33 · 1534 阅读 · 0 评论 -
图片等比例缩放
好多时候我们设置了宽度全屏,高度wrap_content这个属性之后这个属性之后,图片并不会实现等比例的缩放,那么我们就可以在ImageView里添加android:adjustViewBounds="true"这条属性。效果。。谁用谁知道原创 2016-07-12 11:41:09 · 502 阅读 · 0 评论 -
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 · 833 阅读 · 0 评论 -
Android 单选图片,一个dialog全部搞定
一:为什么写这个文章?相信大家对图片选择已经不陌生了,大家基本一直都在用。但是假如你在选择图片的时候遇到,反应比较慢。Android 7.0选择图片时闪退的问题。你不妨花几分钟往下看下。随着相机像素越来越高,手机拍照获取到的照片越来越大,这就需要我们在选择照片时处理好内存溢出的问题。于是出现了选择照片时保存图片的本地路径,上传时在转换为需要的格式。但是,安卓7.0在选择图片时获取到的路径不原创 2017-04-11 15:06:47 · 2289 阅读 · 0 评论 -
一篇文章搞懂Handler发消息时,Handler,MessageQueue,Looper都做了些什么
学习思路构造方法发送消息入队列,进入消息池处理消息构造方法首先看构造方法,一共七个构造方法,但是最后都是调用了两个方法,分别是Handler(Callback callback, boolean async)和Handler(Looper looper, Callback callback, boolean async)。然后来分析这两个方法 public Handle...原创 2019-03-14 16:24:21 · 487 阅读 · 0 评论 -
关于ArrayList动态扩容
学习目标:初始化时元素个数是多少如何扩容先来看看构造方法无参数构造方法 /** * Constructs an empty list with an initial capacity of ten. */ public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELE...原创 2019-03-15 14:58:06 · 136 阅读 · 0 评论 -
带你打造属于自己的TabLayout(ViewPagerIndicator)
viewpagerIndicator先看效果图先说下为什么写这个,Android出了design库之后,基本上就告别ViewPagerIndicator了,但是因为我们有个严格的产品➕设计,所以好多时候用系统原来的样式并不能满足我们的需求。之前是用第三方,但是用来用去,总是有一些不能满足的地方,可扩展性不是很高。于是有了这篇文章,进入正题。用法目前只支持Scroll类型的,不支持平分屏幕...原创 2019-03-12 19:14:40 · 162 阅读 · 0 评论 -
Activity 与 Fragment 之间常见的几种通信方式?
开始介绍方法之前,先借用之前lx36301766 写的答案里的一句话,我个人觉得写的很到位:说到底就是两个普通的JAVA对象相互都持有对方的引用,直接回调就成,哪还需要什么别的通信方式,很简单的问题别搞复杂了大家都知道java是面向对象的编程语言。只要拿到对象,想做什么操作其实很简单。好开始正文。从两个方面开始说Activity与Fragment通信Fragemnt与Activit...原创 2019-08-09 09:15:16 · 1465 阅读 · 0 评论 -
Android:一般什么情况会导致内存泄漏?
最近在和小伙伴一起维护一个github项目,https://github.com/Moosphan/Android-Daily-Interview。每天出一道面试题。感兴趣的可以点进去看看。最近要开始整理答案。所以顺手也在这里发布下自己写的相关面试题的答案。正文开始什么是内存泄漏之前看大家的回答,好多把内存泄漏和内存溢出的概念搞混的。我这里简单解释下。Android给每个app分配了一定的...原创 2019-08-21 15:03:09 · 491 阅读 · 0 评论 -
可以滑动的视频播放器(VideoView)
项目中经常用到一个视频播放器下面有一个评论列表,或者有一些其他的列表。一般情况下,安卓不鼓励视频滚动的。但是偶尔遇到这种要求又不得不做。很不幸我就遇到了。round1楼主把VideoView放到了ScrollView,同时把VideoView的高设置成了wrap_content,问题出现了。VideoView不可见了。后来才发现VideoView必须设置成固定宽高才会出现。round2原创 2016-07-12 10:59:33 · 5644 阅读 · 1 评论