android开发
文章平均质量分 86
hymKing
这个作者很懒,什么都没留下…
展开
-
Android的Handler基本原理源码分析
一、前言学习Android基础知识,都离不开handler,最开始最基础的使用从Handler.post去发送一个消息,Android系统的设计中,为了保证UI渲染的一致性(本质上线程并发问题)和无卡顿体验。耗时的操作需要放在工作线程中执行(一般是开发者自行创建的子线程)、Ui更新放在主线程。这样从各自职责上来讲是非常清晰的,Handler的出现的一个核心目的,就是解决工作线程处理的数据如何传递给Ui线程进行使用。**故而,**我们在研发中,子线程比如做耗时数据处理操作后,调用通过主线程创建的Handl原创 2022-01-13 19:28:36 · 2131 阅读 · 0 评论 -
Glide 4.12图片框架之多级缓存源码设计分析
一、Glide缓存初识在上两篇文章中,我们从源码角度分析Glide框架加载图片的流程、以及Glide图片通过巧妙的空view的Fragment的设计实现的Glide的图片加载的三大生命周期函数onStart、onStop、onDestroy。Glide的框架的源码量确实比较大,今天我们再详细分析一下,Glide的框架的缓存模块的设计。默认情况下,Glide 会在开始一个新的图片请求之前检查以下多级的缓存:活动资源 (Active Resources) - 现在是否有另一个 View 正在展示这张图片原创 2021-12-28 19:32:12 · 988 阅读 · 0 评论 -
Glide 4.12 框架源码中的生命周期设计
在上一篇文章《最新源码Glide4.12框架之加载图片流程源码分析》中,我们主要做了对于通过Glide.with(this).load(url).into(target)的调用图片加载流程的的源码分析,以及对加载流程图的梳理。本篇文章主要对Glide图片框架的生命周期感知进行源码分析,体会Glide是如何做到感知Activity、Fragment的生命周期并控制自身图片加载过程的生命周期的。一、初识Glide图片加载生命周期深度的生命周期集成,以确保仅优先处理活跃的Fragment和Activity原创 2021-12-24 18:45:49 · 1386 阅读 · 0 评论 -
最新源码Glide4.12框架之加载图片流程源码分析
一、前言Android图片加载框架,在android应用开发中是一个常见的话题。在12、13年的时候我记得可能用的最多的是XUtils的一套框架(更早之前叫aFinal框架),这个框架中提供imageUtils用于在android应用的开发中完成远程图片的加载。再后来呢,有Picasso、Fresco、Glide。而这几年的开发经验来看,Glide最为流行。不信,可以查看github上项目地址,分别对比对比watch数、fork数、star数,就能确定Glide确实最为流行。如何对图片框架技术进行选型?原创 2021-12-23 22:09:20 · 2143 阅读 · 0 评论 -
OkHttp源码中Dispatcher和connectionPool线程池分析
在前面《OkHttp原理流程源码分析》中梳理分析了OkHttp中同步发起网络请求和异步发起网络请求,最终的请求分发是有Dispatcher分发器来完成的,Dispatcher分发器的实现中涉及到的线程池的应用代码,并未做分析,今天我们先看第一个线程池应用,Dispatcher中的线程池实现。一、OkHttp中Dispatcher的线程池实现异步网络请求最终会被Dispatcher统一管理调度,client.dispatcher().enqueue(new AsyncCall(responseCallba原创 2021-12-20 16:14:17 · 1431 阅读 · 0 评论 -
OkHttp原理流程源码分析
OkHttp已经是非常流行的android客户端的网络请求框架,我其实在项目中使用也已经好几年了,之前一直把重心放在如何快速的搞定业务上、迭代的效率上,这一点来讲,对于一个公司优秀员工是没有毛病的。但是越到后面,你会发现,真正的高效,是你对技术的更深层次的理解,对技术更熟练的掌握。所以今天重回技术本身,搞清楚OkHttp的实现机制和部分源码分析,也提醒阅读本篇文章的同学,除了在公司加班加点赶业务进度的同时,从长远角度看,提深自我的技术技能,才是对公司和自己的双赢结果。“OkHttp 4.x upgrade原创 2021-12-17 15:50:50 · 658 阅读 · 0 评论 -
Android中的内存泄漏和内存溢出
一、内存溢出和内存泄漏的概念理解**内存溢出:**是指程序代码片段被执行申请内存时,没有足够的内存空间,导致OOM异常。OOM:即内存溢出,out of momery。Android系统为每一个应用程序申请的内存是有限的(为什么如此设计,在dalvik虚拟机章节已经说明),一般为64M或者128M等,国内手机产商修改rom后,也会有所不同。我们可以在清单文件中配置android:largeheap=“true”,从而可给app申请更大的手机内存空间。**内存泄漏:**内存泄漏是指程序在申请内存后,原创 2021-12-09 15:47:23 · 3711 阅读 · 0 评论 -
虚拟机之Jvm、dalvik、art联系和区别
一、了解JVMJVM: java virtual machine,缩写JVM,一种能够执行java bytecode的虚拟机器,本质上是一种软件实现,也可以理解成以一条运行java bytecode的底层程序。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。实际上,并不是仅有java源代码,能编译生成.class文件,也就是我们所说的字节码文件,下面是引用一张维基百科的图:同样,python源码程序,也能最终编译成.class/.jar文件。二、Jvm、dalv原创 2021-12-08 10:43:36 · 3940 阅读 · 0 评论 -
LaucherActivity的源码分析和应用(非launcher桌面应用)
一、启动初探”在android手机上,当我们点击桌面上的按钮启动一个应用,就能打开应用的界面。这里我们所说的桌面其实就是android系统启动后的就已经帮我们运行的第一个程序,launcher程序。launcher程序可以理解为作为其它应用app入口管理的一个系统自带的app,正常情况下,安装一个新的应用,就会在桌面(laucher)程序中显示一个相应的图标。上述点击桌面上的图标打开应用的过程,本质上是通过lancher应用的提供的桌面图标启动另一个app的过程,并打开了新应用的首个Activity。原创 2021-11-23 22:52:30 · 2350 阅读 · 0 评论 -
通过自定义View了解MeasureSpecMode
一、自定义View的基本步骤本篇文章的核心知识点,并不是自定义View的全部讲解,主要是通过一个简单的demo了解自定义View的MeasureSpecMode模式。自定义View基本分为自定义View和自定义ViewGroup。自定义View的步骤:继承View重写构造方法(有四个构造方法,不同的使用场景可以了解下)自定义属性,在构造方法中初始化属性重写onMeasure方法测量宽高重写onDraw方法绘制控件关于View的绘制流程中,三个核心的回调方法onMeasure、onLayo原创 2021-11-21 14:32:28 · 2023 阅读 · 0 评论 -
Android系统启动流程分析
一、启动初探在android手机上,当我们点击桌面上的按钮启动一个应用,就能打开应用的界面。这里我们所说的桌面其实就是android系统启动后的就已经帮我们运行的第一个程序,launcher程序。launcher程序可以理解为作为其它应用app入口管理的一个系统自带的app,正常情况下,安装一个新的应用,就会在桌面(laucher)程序中显示一个相应的图标。上述点击桌面上的图标打开应用的过程,本质上是通过lancher应用的提供的桌面图标启动另一个app的过程,并打开了新应用的首个Activity。原创 2021-11-20 16:51:46 · 4570 阅读 · 0 评论 -
基于android10.0源码分析Activity的启动流程
一、梳理源码流程干什么Activity是四大组件中最重要的组件之一,下面来分析Activity的启动过程,了解Activity的启动过程能帮助我们更好的对组件Activity的理解,也能帮助我们更好的把控Activity生命周期的变化过程。当然Activity作为四大组件之首,10.0版本的Activity的代码函数在8000行,关联的一些类Instrumentation、ActivityTaskManager、ActivityStarter等等,怎么也是几万行的代码,一次完全分析起来会很困难,这里面主原创 2021-11-07 12:12:37 · 1548 阅读 · 0 评论 -
FLAG_ACTIVITY_CLEAR_TOP和singleTask的区别
Activity的Flags的设置,可以让Activity的运行具有一些特殊的特性,比如有些可以产生和启动模式相同或相似效果的,还有比如Activity在非前台的时候,也不会保存后台的历史列表中。本文重点分析FLAG_ACTIVITY_CLEAR_TOP,也简单介绍一下其它几个常用的Flag以及使用场景FLAG_ACTIVITY_NEW_TASK将Activity指定为singleTas...原创 2019-12-09 09:47:04 · 1460 阅读 · 1 评论 -
Activity之taskAffinity任务相关性场景分析
TaskAffinity,两个英文单词的组合,直译为任务相关性,可以用来设置Activity任务栈任务相关性的一个属性,这个属性参数指出了Activity所希望进入的任务栈的名称。taskAffinity的特性结论:具有同一相关性的 Activity 归属同一任务(从用户的角度来看,则是归属同一“应用”)任务的相关性由其根 Activity 的相关性确定。(文中有测试分析)我们也可以为A...原创 2019-12-04 15:13:36 · 628 阅读 · 0 评论 -
通过使用场景彻底明白Activity启动模式
先给出结论:Activity的启动模式的设计的主要目的是为了解决应用页面交互需求的不同场景。具体不同的启动模式,适合解决什么样的场景问题,我们先来看看Activity的启动模式都有哪些。1、standard标准模式在介绍标准模式之前,先介绍一下多个Activity实例在内存当中的维护数据结构是什么,所有的Activity实例被创建后,都会加入到栈数据结构中,在Android知识体系的术语中,...原创 2019-11-27 17:03:00 · 525 阅读 · 0 评论 -
Activity生命周期回顾
本文参考《Android 开发艺术探索》以上图片来源google官方指南关于Activity的总结,会本着结论先行的方式进行一、典型情况下的Activity的生命周期onCreate:Activity正在被创建,可以做一些初始化工作,比如setContentView去加载布局资源,初始化数据。onStart:Activity正在被启动,即将开始,Activity已经可见,但是并没有出...原创 2019-11-11 15:05:24 · 459 阅读 · 0 评论 -
View的Touch事件的分发系列-(1)ACTION_DOWN事件分发流程分析
在Android开发的知识体系中,其中View体系尤为重要,我们在平常的开发当中,无处不是View,很多人曾经都遇到过可滑动View嵌套的冲突问题,回想一下之前都是怎么处理的呢。还有一些在平常开发过程中需要去自定义开发的手势滑动交互的View,比如Android sdk提供了横向滑动的ViewPager,但是实际开发中,可能有垂直滑动的ViewPager的需求,如果我们自己开发,肯定离不开View...原创 2018-12-02 22:40:53 · 880 阅读 · 0 评论 -
对SD卡的读写操作-保存用户登录密码
import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStreamReader;import android.content.Context;import android.o原创 2014-06-12 15:06:43 · 1703 阅读 · 0 评论 -
SD卡可用空间大小的判断
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); File path = Environment.getExternalStorageDirectory(); /*StatFs原创 2014-06-12 15:16:11 · 2800 阅读 · 0 评论 -
Android数据的四种存储方式之SharedPreferences
除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data//shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的原创 2014-06-13 02:32:51 · 1797 阅读 · 0 评论 -
Android数据的四种存储方式之SQLite数据库
/** * 本例解决的问题: * 核心问题:通过SQLiteOpenHelper类创建数据库对象 * 通过数据库对象对数据库的数据的操作 * 1.sql语句方式操作SQLite数据库 * 2.谷歌提供的api对SQLite数据库的操作 * 3.SQLite对事务的操作 */import com.itheim.createsqlitedb.db.MyOpenHelper;impor原创 2014-06-13 21:43:12 · 1626 阅读 · 0 评论 -
用Gradle 构建您的android程序
用Gradle 构建您的android程序优 良自学吧提供用Gradle 构建您的android程序,用Gradle 构建你的android程序 前言 android gradle 的插件终于把混淆代码的task集成进去了,加上最近,android studio 用的是gradle 来构建项目, 下定决心把android gralde 构建项目的用户指南全部看完, 让不会用gradle 的转载 2015-03-03 18:51:31 · 1232 阅读 · 0 评论 -
gradle打包遇到的错误汇总
gradle打包过程错误汇总原创 2015-03-03 18:59:38 · 25945 阅读 · 2 评论 -
为什么需要在应用程序中增加渠道信息?
为什么需要在应用程序中增加渠道信息?Android应用的发布需要面对各种各样的市场,我们称之为渠道。有的时候,我们需要知道应用是从哪个渠道下载的。比如,我们可能需要统计哪些市场带来的用户量比较大。再比如,我们可能有一些盈利需要和具体的渠道进行分成。这些都是统计渠道的信息。一般如何在应用中加入渠道信息?为了统计渠道信息,就不得不在程序的某个地方加入渠道的信息,然后针对不同的渠道打不同转载 2015-03-03 18:46:40 · 1390 阅读 · 0 评论 -
gradle多渠道打包及友盟统计-eclipse版本
在进行渠道打包的之前,先看看准备篇,知道打包为了什么。参见1.0android批量打包认知。eclipse中使用gradle多渠道打包全部流程一.生成gradle文件,配置本地的gradle环境1.选中需要打包的项目右键选择expert->生成gradle文件,如下图所示2.完成第一步后,刷新项目可以得到如下图所示的文件显然项目中多出了gradle.原创 2015-03-02 19:39:03 · 2899 阅读 · 0 评论 -
Android studio share项目到svn仓库
我们有新的项目要进行开发了,一直想用用android studio。所以在新项目上,果断使用。这里是我将android studio项目share到svn仓库的全过程。后期再考虑是否要搭建公司的git服务器。一步步来吧。1.设置svn的客户端路径:(我的本地svn客户端是之前就已经安装好了,所以这里面是默认的状态)(这一步非常是必须的一步骤,否则,后续再share项目的时候就会报错,s原创 2015-04-22 19:11:49 · 6501 阅读 · 3 评论 -
MediaPlayer基础-生命周期状态分析
注:本文参照google apis:https://developer.android.com/reference/android/media/MediaPlayer.htmlMediaPlayer类可用于控制音频/视频文件和流的播放或回放(playback)。1.状态图:音频/视频文件和流的播放控制是使用一个状态机进行管理。下图显示了生命周期,并支持播放控制操作驱动的Medi原创 2016-06-20 23:21:10 · 2005 阅读 · 0 评论 -
Android官方Media Playback中文教程
此文参照 android developer API Guideshttps://developer.android.com/guide/topics/media/mediaplayer.htmlMedia Playback(媒体播放)Android 多媒体框架能够支持多种普通媒体类型,所以我们很容易的整合音频,视频,图片到我们的应用中来。这些多媒体的资源可以是原创 2016-06-20 23:34:18 · 6036 阅读 · 0 评论 -
setTheme(Theme_NoDisplay)巧妙使用
巧妙的而使用了setTheme(android.R.style.Theme_NoDisplay);这种方式解决了产品需求的变更。同样录制界面左侧的导入视频 同样也会经历编辑视频页面,在到编辑中...合成mp4进度页面。说明:合成视频的方原创 2016-12-10 17:18:20 · 6991 阅读 · 2 评论 -
svn和git的区别,为什么使用git?
为什么要使用git作为版本管理工具,git和svn的区别是什么?原创 2016-12-14 02:07:29 · 60152 阅读 · 3 评论 -
8个技巧倍速提升Gradle构建
8个技巧倍速提升Gradle构建,提升开发效率,当然对心情也有好处的吗。原创 2016-12-21 01:05:42 · 5729 阅读 · 0 评论