Android
Coding-ls
这个作者很懒,什么都没留下…
展开
-
深入RecyclerView学习—缓存机制
前言RecyclerView作为替代ListView的组件,得益于RecyclerView的灵活性和可定制程度高的特性。除此之外RecyclerView的预取机制以及缓存机制也是RecyckerView的一大亮点。RecyclerView的灵活性是通过几个不同的组件协同实现的。LayoutManager:是布局管理器,用来决定视图如何填充RecyclerView。RecyclerView.Adapter:适配器是负责提供视图所需要的数据集以及管理视图的创建和数据绑定。ViewHolder:视图持有原创 2020-12-26 18:57:02 · 464 阅读 · 0 评论 -
Android视图体系—理解Window概念
前言在Android视图体系中Window就是一个窗口的概念。Android中所有的视图都是依赖于Window显示的,比如:Activity、Dialog、Toast都是在Window中显示的。首先来熟悉一下Window的属性。Window的类型: 应用Window:即Android应用所在的Window,比如Activity对应的Window; 子Windwo:必须依赖于应用Window存在,比如:Dialog; 系统Window:系统级别的Window,比如系统错误窗口、原创 2020-11-14 17:03:00 · 619 阅读 · 1 评论 -
Android架构组件—ViewModel原理学习
概述Android ViewModel是Android Jetpack组件库中的一个组件,在Android MVVM模式中被广泛使用。ViewModel的主要特性是以注重生命周期的方式存储和管理数据。这种特性体现在ViewModel与Android组件(Activity、Fragment和Service)的生命周期相绑定,在组件的生命周期中ViewModel的数据会一直保存在内存中,即便是在系统配置变更时也会存在。ViewModel的优势与UI层低耦合在MVVM模式中,数据和业务逻辑可以集中在Vi原创 2020-11-01 18:02:13 · 1003 阅读 · 0 评论 -
枯燥的源码分析—Application创建过程
概述在Android应用进程中,每个应用都对应着一个Application。Application的创建于销毁贯穿了整个应用进程的生命周期。所以理解Application的创建过程不仅有利于我们理解应用进程的创建,还能加深对使用Application中的理解。接下来回从两个进程中来分析Application的创建过程,一个进程是system_server进程,一个是应用进程。这两个进程都在创建的过程中创建了Application。Application有什么用我们使用Application一般是在应原创 2020-10-31 17:52:27 · 383 阅读 · 0 评论 -
Service组件概览学习
前言作为Android四大组件之一的Service组件是一种可在后台长时间运行而不提供界面的应用组件。Service的一大特点就是可以在后台运行,即使用户切换到其他应用Service也可以继续工作。Service比较典型的应用场景是在后台播放音乐、处理网络事务、处理I/O等。接下来就来学习下Service组件基础的特性。Service的属性与启动方式在讲Service的生命周期前,先看下Service的三种类型以及Service的启动方式。在官方文档中,将Service分为3中类型,分别为:前台服务原创 2020-10-31 15:02:34 · 349 阅读 · 0 评论 -
View中的Context是哪里来的
前言在自定义View中我们经常通过getContext()方法来使用Context获取资源、设置样式等。那么大家有没有想过View中getContext()获取的Context是来自哪里的?接下来就分析View中Context的生成过程。View的Context我们都知道在View中有个getContext()方法供开发者使用。 /** * Returns the conte...原创 2019-07-23 23:15:52 · 2018 阅读 · 0 评论 -
Glide学习(一)—工作流程分析
前言目前在Android中有许多图片加载框架,比如UniversalImageLoader、Volley、Picasso、Fresco、Glide等。Glide作为一个快速高效的Android图片加载库,是Android开发使用最多的图片加载库之一。因为Glide的高性能、可扩展的特性,也是被Google推荐使用的图片加载库。用过Glide的同学都知道,Glide仅仅使用一行代码就可以将图片加...原创 2019-07-13 14:08:14 · 299 阅读 · 0 评论 -
Android上下文Context的那些小事
前言Context作为Android中的上下文对象,是Android常用的类。启动四大组件、创建视图、获取系统服务、访问资源等都要用到Context。从Context有上下文的意思,结合Context的职能。可以看出,Context在Android中提供了一个“语境”的意义,它提供了应用程序环境的全局信息。在这个“语境”中可以通过Context使用相应的接口,做符合当前“语境”意义的事。比如,...原创 2019-05-31 22:53:55 · 340 阅读 · 0 评论 -
Android自定义Lint增量代码检查工具
背景Lint是Google提供的一个静态代码检查工具,可以扫描出代码中潜在的问题,并且会对开发人员做出提示。而且除了Android原生提供的几百种Lint规则以外,还可以使用Lint框架的API自定义Lint规则。自定义Lint规则可以根据项目需求制定不同的扫描规则。比如:编码规范、代码风格、特定问题检查等。有了自定义检查规则,提交代码的时候可以规范代码编写。但是还有一个问题,新的代码使用新...原创 2019-05-22 22:25:47 · 954 阅读 · 1 评论 -
Kotlin学习(一)—Kotlin的泛型
前言在Kotlin中使用泛型的方式跟Java大体类似,其中也有一些特性的差别。不论是Java中的泛型还是Kotlin中的泛型,总有些概念会让人产生困惑。接下来回结合Java的泛型来学习Kotlin的泛型。Kotlin中泛型的使用在泛型的使用中,最常用到的就是泛型函数以及泛型类。在介绍这两种方式的使用之前,先介绍一下泛型的类型参数。泛型类型参数泛型的类型参数就是在声明泛型时定义的类型形参,...原创 2019-07-18 00:19:34 · 377 阅读 · 0 评论 -
OKHttp学习(一)—OKHttp的工作原理
前言OKHttp是Square公司辨析的一个网络请求框架,也是目前市面上使用最多的网络框架之一。OKHttp是基于HTTP协议封装的一套请求客户端,在请求底层支持连接同一个地址的链接共享同一个Socket。OkHttp作为当前Android端最火热的网络请求框架之一,有很多的优点:支持HTTP/2 协议,允许连接到同一个主机地址的所有请求共享Socket。可以有效管理网络连接以及提高连接复...原创 2019-07-31 00:06:52 · 1409 阅读 · 0 评论 -
Glide学习(二)—缓存策略
前言在前面一篇文章中,主要分析了Glide的工作流程,以加载网络图片为例分析了Glide是如何工作的。在熟悉了Glide的工作流程后,我们就可以及继续一些细节的分析。接下来,针对Glide的缓存策略进行分析。我们知道,一个高效的图片框架是少不了缓存的,使用缓存可以减少资源的重复加载,提高资源的利用率。在Glide中,缓存分为两大类:内存缓存以及硬盘缓存。具体到缓存类型可以分为4种,一下是官网给...原创 2019-07-27 11:35:09 · 2614 阅读 · 0 评论 -
重温四大组件(三)—Activity的启动过程
前言重温四大组件第四篇,这里分析一下Activity的启动过程。Activity的启动过程分为两种,一种是根Activity的启动,另外一种是普通Activity的启动过程。根Activity也就是默认启动的Activity(在AndroidMinifest.xml配置的启动Activity)。普通Activity指的是除根Activity的其他Activity。其中根Activity和普通Ac...原创 2019-08-10 19:40:08 · 170 阅读 · 0 评论 -
Android高效开发(一)—合理使用图片资源
前言在Android开发中,我们难免会遇到加载图片的场景。不管是网络图片、资源图片或者是SD卡中的图片,都需要加载到内存中使用。如果不能合理处理图片,可能会导致OOM的问题或者其他性能问题,接下就讨论下Android中图片资源处理的几种常用的方式。Resource中的图片资源的处理在Android中开发的时候都会用到很多图片素材,对于某些背景图片、各种图标或者其他一些提示图片我们通常会放到r...原创 2019-08-20 22:36:34 · 307 阅读 · 0 评论 -
Dart中的异步与事件循环
前言Dart作为Flutter的开发语言,了解Dart的机制是必可少的。本篇文章就介绍一下Dart的异步操作与事件循环机制。异步操作我们都知道在开发过程中,如果有耗时操作,我们一般都会使用异步任务解决,以防主线程卡顿。事件循环是Dart中处理事件的一种机制。Flutter中就是通过事件循环来驱动程序的运行,这点与Android中的Handler有点类似。Dart的事件循环机制Dart语言...原创 2019-09-09 19:16:56 · 1059 阅读 · 0 评论 -
重温Android四大组件(二)—Activity的启动模式与标志位
前言重温Android四大组件的第二篇,主要总结Activity的启动模式以及相关的标志位。Activity启动模式是Activity的一个重要的属性,启动模式决定了Activity在Activity栈的存在的行为。不同的启动模式下的Activity有不同的表现,所以开发者需要搞清楚各个启动模式的特性以及相互之间的区别。Activity的启动模式standard(标准模式):这是系统默认的...原创 2019-05-08 09:44:12 · 294 阅读 · 0 评论 -
重温Android四大组件(一)—Activity的生命周期
前言四大组件对于Android开发者是老生常谈的知识了,相信每个Android开发者对四大组件都已经很熟悉了。但是四大组件作为Android应用的基础,作为开发者不仅要熟悉而且要烂熟于心。这里以《重温Android四大组件》为题目是为了巩固自己的Android基础,加深对Android的认知。Activity生命周期探索Activity生命周期是Activity在不同场景下表现的一种状态,...原创 2019-04-20 17:01:25 · 284 阅读 · 0 评论 -
Android探索之路(四)—View的使用
前言在这篇文章之前已经总结学习了View的工作流程、事件分发机制。这里总结一下在工作过程中使用View的一些感想,主要从常用的View中的一些方法以及View的一些基础知识两方面来进行介绍。View的位置参数在Android系统中存在着坐标系用来确定位置。分为两种:一种是Android坐标系(是整个Android设备的坐标系),还有一种是View的坐标系(是一个视图的坐标系)。这两种坐标系都...原创 2019-02-11 23:06:41 · 919 阅读 · 0 评论 -
View的学习笔记-View的事件分发机制
在Android中,View是我们平常使用最多的组件了,因为View作为视图呈现于我们眼前,承担着可视化的重要任务。View应用之广泛,我们平时经常用到的控件,比如TextView,ImageView,Button,ListView等都直接继承于View。除此之外,我们所熟知的还有ViewGroup,它也是继承于View。而我们所使用的各大布局,比如:LinearLayout,RelativeLa原创 2016-08-09 09:40:08 · 287 阅读 · 0 评论 -
View的工作原理之View的measure、layout、draw
View作为Android在视觉上的呈现,在Android的体系中承担着重要的作用。在我们平时的开发中,会用到各种各样的View,在有特别的需求时还要用到自定义View。所以,掌握View的底层工作原理对于我们能够更好的使用View有着更大的帮助。原创 2016-09-19 17:13:02 · 606 阅读 · 0 评论 -
Android项目快速编译之Freeline-Android的配置与集成
Freeline是蚂蚁金服旗下开发的一个基于动态替换的编译方案,运用到项目后可以极大的提高项目编译速度。相比较现在的instant-run,buck,layoutcast等方案快数倍。 开源地址: https://github.com/alibaba/freeline 相关原理介绍: https://yq.aliyun.com/articles/59122?spm=5176.8091938.原创 2016-09-29 13:31:06 · 5863 阅读 · 0 评论 -
Freeline的离线配置与源码修改再编译
前些日子研究过freeline,然后写了篇博客分享给大家。后来由于项目需要,又研究了下freeline的离线配置(内网开发表示很不爽)。所以今天就分享一下如何对freeline进行离线配置以及对源码进行修改。原创 2016-10-27 09:59:50 · 1382 阅读 · 0 评论 -
使用第三方库找不到SO库UnsatisfiedLinkError错误原因及解决方案
文/穿裤衩闯天下(简书作者) 原文链接:http://www.jianshu.com/p/b9a524f24b7e在开发项目的时候我们免不了使用一些第三方的库来进行快速开发,有些第三方库只是简单的一个jar包,但是有些使用了jni开发,因此会包含so库文件,这个时候如果不消息我们就会遇到一个错误:java.lang.UnsatisfiedLinkError;最近经常遇到有开发者在问使用环信sdk的转载 2016-10-28 10:29:33 · 3134 阅读 · 0 评论 -
Android-TextView跑马灯效果实现与分析
在阅读博客的时候看到有关于TextView跑马灯的效果,感觉是一个不错的效果,平常在开发中也很容易用到。于是就简单的实现了一次跑马灯的效果。 首先,实现跑马灯效果的主要是用到TextView中的一个属性。原创 2016-11-17 10:44:51 · 700 阅读 · 0 评论 -
Android中一种简单的滑动冲突解决方案
在Android开发中会因为不同的需求经常用到自定义的控件。但是对于各种不同的控件都需要做特定出路,比如我们会遇到具备滑动功能的控件相互嵌套。那么这个时候就要解决滑动重突。 首先来了解一下View的滑动时间分发的机制。在Android系统中View的分发会有一下几步,先以父容器为例: (1)当有滑动事件产生时,会触发父容器中的onInterceptTouchEvent函数,这个函数的作用就是判断原创 2017-05-31 14:54:27 · 380 阅读 · 0 评论 -
Android学习——自定义Dialog
今天在实现一个功能的时候,用到了自定义Dialog,于是就总结一下记录下来以加深自己学习的成果。 我们平常在用到对话框的时候,如果界面要求不太复杂,通常直接采用AlterDialog对话框进行简单的对话框使用,但是在我们需要定制一些对话框显示的时候,往往都会用到自定义对话框,话不多说,直接上代码。首先是自定义对话框:今天在写对话框的时候,在我对对话框的控件进行一些值的初始化时每次都会报空原创 2016-07-13 21:17:37 · 326 阅读 · 0 评论 -
Android探索之路(一)——消息处理机制
摘要在Android应用程序中,主线程启动时就会在内部创建一个消息队列。然后进入一个无限循环中,轮询是否有新的消息需要处理。如果有新消息就处理新消息。如果没有消息,就进入阻塞状态,直到有新消息到达。 那么在Android系统中,消息处理机制是怎么实现的呢?在程序开发时,我经常会使用Handler处理消息。所以可以直到Handler是个消息处理者。那么还有消息队列和消息轮询两个角色。它们分别是...原创 2018-07-14 17:49:17 · 2511 阅读 · 0 评论 -
Android-FindBugs中常见的bug级别与问题说明
16公版Lint检查汇总项目名称:Project20160503 SVN版本号:119312 检查工具:Lint、FindBugs基于FindBugs的分析Bug级别Scariest(最高bug级别)ScaryTroublingOf ConcernScariestBug数量:共29条Useless self-operation(描述:自我赋值,将值自己赋...原创 2018-09-10 22:36:33 · 7971 阅读 · 1 评论 -
Android探索之路(二)—View的工作流程
Android中View体系概览在Android应用中所有的用户界面元素都是由View和ViewGroup对象构建而成。View对象用于绘制屏幕中可以和用户交互的内容。ViewGroup用于存储其他View对象和ViewGroup对象,从而构成界面的布局。就如图中所示,用户界面的布局就是通过View和ViewGroup的结构层次定义的。View和ViewGroup组成了用户界面的View树,在...原创 2018-12-18 22:06:54 · 283 阅读 · 0 评论 -
Android探索之路(三)—View的事件分发机制
前言View作为Android应用与用户交互入口,除了展示视图外,还承担了处理用户操作的任务,比如用户的点击、长按、滑动事件等。处理点击事件的机制就是View的事件分发机制。View的事件分发机制当用户点击屏幕时,就会产生点击事件,这个事件信息被封装在一个类中,这个类就是MotionEvent。事件产生后Android系统会将事件传递到View的层级中,然后MotionEvent就会在Vie...原创 2018-12-24 22:10:58 · 185 阅读 · 0 评论 -
Android系统架构(一)—Android系统架构简述
前言Android系统是一种基于Linux的操作系统。通常将Android系统分为5层,从上到下依次是应用层、应用框架层、系统运行库层、硬件抽象层和Linux内核层。![Android系统架构](https://img-blog.csdnimg.cn/20181231211730947.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGV...原创 2018-12-31 22:06:05 · 2521 阅读 · 0 评论 -
Android系统架构(二)—Android系统启动过程
前言作为一个Android应用层的开发,平常对于Android系统底层并不十分了解原创 2019-01-17 22:27:18 · 633 阅读 · 0 评论 -
Android学习第一篇——Activity的启动模式
我的第一篇博客——从android开始: 接下来就记录一下我在学习Activity启动模式的时候所学到的东西,大部分也都是从一些前辈写的书籍上面了解的,这里之所以写下来的目的主要是要对自己所学的东西有个系统的整理,同时也有助于之后的学习。而且我也会加入自己在学习的过程中通过代码验证得来的更加直观的结果。 Activity的启动模式(属性名为LunchMode)原创 2016-07-03 22:37:09 · 415 阅读 · 0 评论