Android源码
文章平均质量分 87
Zephyr Cai
这个作者很懒,什么都没留下…
展开
-
Android 12兼容性适配指南
Android 12 来了,从今年年初开始到如今正式发布前夜,Google已经释放了Beta 5版本,可以在官网下载预览版本进行测试。测试应用的兼容性十分重要。在每个系统版本中,我们都会对平台进行整体的改进,强化隐私和安全性,并优化整个操作系统的用户体验。这些都可能会影响您的应用,所以请务必查看 行为变更 清单并进行针对性的测试,然后向用户发布兼容性更新。兼容性测试是确保应用品质的基础但十分核心的环节,可以确保您的用户拥有良好的应用体验。当用户将自己的设备更新到 Android 12 后,他们会希望..原创 2021-09-25 17:16:13 · 9859 阅读 · 0 评论 -
Android动态权限最强整理
前言:在Android系统不断的升级过程中,Android应用的开发也有不同的变化,对于权限,Android6.0以上的系统中,引入了运行时权限检查,运行时权限分为正常权限和危险权限,当我们的App调用了需要危险权限的api时,需要向系统申请权限,系统会弹出一个对话框让用户感知,只有当用户授权以后,App才能正常调用api。目前所有的权限类别可参考https://developer.android.google.cn/reference/android/Manifest.permission?hl=zh原创 2021-08-14 11:52:39 · 3097 阅读 · 1 评论 -
Android开发中的Https安全规范
前言:越来越多的Android应用为了android通信安全,将http通信改为Https通信连接,或单向验证或双向验证。 但是如果不按规范将TLS连接中对证书等进行安全校验,实际上和http通信没有任何差别,还是有很多的安全风险,如中间人攻击等。一方面TLS版本要高,如TLS1.2、TLS1.3,因为旧版本的都已发现安全漏洞。另外,就是一些通用部分,如下为阿里Android开发手册部分提到的规范,可以进行参考。从 2017 年 3 月 1 日起,只要新应用或应用更新采用的 HostnameVerif原创 2021-01-11 11:49:48 · 1166 阅读 · 0 评论 -
Android 9 startActivity时序图
Android 9 startActivity的时序图,不同系统版本会有差别。原创 2020-12-12 16:39:04 · 187 阅读 · 0 评论 -
ServiceLoader问题Thread.getContextClassLoader() may fail for processes that host multiple applications
最近使用AutoService库,做组件化的接口时,一直找不到接口的实现类,多次测试无果,但是每次发现log中都有如下log,W/ActivityThread: ClassLoader.getResources: The class loader returned by Thread.getContextClassLoader() may fail for processes that host multiple applications. You should explicitly specify a原创 2020-11-22 10:22:59 · 1018 阅读 · 0 评论 -
Android线程池ThreadPoolExecutor最全解读
0引言在操作系统中,线程是操作系统调度的最小单元,同时线程又是一种受限的系统资源,即线程不可能无限制的产生,并且线程的创建和销毁都有一定的开销。系统中的大量线程是通过时间片轮转的方式调度的,所以如果一个进程里有过多的线程,为了所有线程都得到执行,需要不断的创建、销毁、保存现场、恢复现场等操作,会提高cpu和内存消耗,并且低效能。所以通过线程池的使用,可以缓存一定数量的线程,减少频繁创建、销毁线程带来的系统开销。1.线程池ThreadPoolExecutor简介线程池是JDK中提供的方法,包路径为ja原创 2020-09-20 12:02:32 · 637 阅读 · 0 评论 -
手写路由框架,了解ARouter框架核心原理
前言路由框架是干什么的:首先看百度百科,路由_百度百科,“路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程。” 在Android程序里,相当于有一个可以帮用户转发两个客户的通信信息。比如页面路由转发,即Activity跳转,但这里的框架不限于此。我需要么?一般android开发中,进行页面跳转时,一般写法如下:Intent intent = new Intent(mContext, XXActivity.class);intent.putExtra(“key”,“va原创 2020-06-28 23:27:07 · 830 阅读 · 0 评论 -
Android性能篇之(一)序言及JVM
android性能优化问题一直是android开发者遇到的难点之一。性能优化包含的内容广而且比较深,内存的分配、管理、回收、溢出、优化,android进程机制,各种性能优化工具的使用,电量,界面流畅度等等,无一不是需要深入探究和分析才能办得到的。 序言 转载请声明,转自【https://www.cnblogs.com/andy-songwei/p/9739836.html】,谢谢! 笔者从转载 2020-05-21 17:32:50 · 214 阅读 · 0 评论 -
手写简化EventBus之注解处理器方式,理解框架核心原理
前言自前一篇文章:手写简化EventBus,理解框架核心原理(反射实现方式)写完后,一直在研究注解处理器实现方式,中间又有其他事情耽搁了,所以到今天才补上这篇文章。此篇文章是在上篇反射方式实现的源码的基础上进行更改实现的,所以如果还没看上篇文章的可以先浏览下,能够更快的了解脉络和源码结构,能够更快的进入主题,更快理解。注解处理器(APT)顾名思义,APT就是注解处理器,其是Annotation Processing Tool的简称。它是javac的一个工具,用来在编译期扫描和处理注解,通过注解来生成原创 2020-05-09 16:58:05 · 426 阅读 · 0 评论 -
手写简化EventBus,理解框架核心原理
前言本来想学习下EventBus最新框架的源码,但是最新的框架的代码量已经很大了,很多都是锦上添花的东西,很多核心的原理代码需要从中剥离出来去了解。但是对于刚开始看源码就直接拿到这么功能丰富并完善的代码,可能收效甚微。为了自己学习并且帮助读者同志们学习,这里自己根据以前学习的经验理解,手写一份简化Eventbus源码,和大家一起学习此框架的要义。EventBus技术架构简介Eventbus...原创 2020-04-19 17:32:04 · 2353 阅读 · 1 评论 -
从源码分析Service和IntentService的区别
Service:概念:Service是一个在后台执行长时间运行操作而不用提供用户界面的应用组件,可由其他组件启动,即使用户切换到其他应用程序,Service 仍然在后台继续运行。特征:Service分为两种工作状态,一种是启动状态,由startService方式启动。一旦服务启动,它就会在后台无限期的运行,生命周期独立于启动它的组件,即使启动它的组件已经销毁了也不受任何影响。任务执行完成之...原创 2020-03-22 17:39:45 · 382 阅读 · 0 评论 -
Android注解-看这篇文章就够了
前言注解,也被称为元数据,为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据。(Java编程思想)很多文章都是讲述java注解的,而且很多例子虽然有和Android互通的部分,但是Android开发中也扩展了很多单纯Java中没有的注解应用。所以这里主要介绍Android开发中的注解,当然包括Java注解。目前很多框架开发或者Android开发中都用...原创 2020-03-21 17:14:39 · 11433 阅读 · 3 评论 -
深入浅出AsyncTask的工作原理
前言AsyncTask类一般是android开发人员接触的最早的异步处理方法,虽然现在流行的有很多新的异步任务类,如RxJava等,但是对于AsyncTask的底层实现原理还是有必要了解学习的,对于我们自己理解其他框架或者自己设计框架都有很大的帮助。它使用handler和线程池的方式打到异步操作,将结果返回到主线程处理。数据结构在讲解AsyncTask的原理前,我们需要先来复习或者学习下其用...原创 2020-03-07 14:46:17 · 3443 阅读 · 0 评论 -
BlockingQueue阻塞队列原理解析
BlockingQueue,什么鬼,刚开始接触到这个数据结构的时候,从字面意义上根本没看出这个的意思,怎么会有个block冠在前边,感觉是个不太好的词。但是又发现其在某些服务任务框架上经常使用。今天我们来探秘下这个数据结构的用法。BlockingQueue源码分析首先,打开JDK的源码,找到BlockingQueue这个数据结构。(android开发要安装的jdk 1.8,在其安装目录即有源码...原创 2020-02-29 13:10:02 · 875 阅读 · 0 评论 -
五分钟读懂Android中的Binder跨进程机制和AIDL工具
做Android开发,迈入高级必须会的技术很多,而且肯定包括Binder技术,关于Binder的了解,笔者最开始只是使用AIDL工具开发接口,生成Service的服务方法,对于其内部的实现细节不太了解。从书本上或者搜索看了好几遍,每次都是似懂非懂,然后日子久了,连那点印象也不见了。所以最近的这次综合了解了这个技术后,决定将自己的理解记录下来,一方面巩固理解,一方面分享给需要的朋友。Binder ...原创 2020-02-07 12:10:56 · 3613 阅读 · 1 评论 -
CopyOnWriteArrayList的原理及使用
程序语言中,容器是所有编程中的基础工具。这里当然也包括并发编程。我们熟知的容器包括arraylist,map,set等。既然有了arraylist,那为何还要设计个copyonwriteArraylist。原理从字面意思,这个自注释的数据结构,Copy-On-Write容器即写时复制的容器。是为了并发操作避免发生同步问题而设计的。同城我们为了保证数据同步,会增加锁来保证。而CopyOnWri...原创 2020-02-05 12:42:35 · 1028 阅读 · 1 评论 -
设计模式之面向对象六大原则---读书笔记
编写代码,在工作了一段时间后,在不断的面对需求变化更改,堆砌代码之后。为了之后的代码编写效率,设计和旧代码的优化设计,我们需要考虑优化和设计代码需要考虑的几大原则,以指导我们的开发和优化工作。有经验的工程师可能记得程序员常说的SOLID原则,或者曾经学习时听过,日复一日工作加班,又不记得之前曾经学习过的理论知识,这里总结学习下,希望对看过这篇文章的人有所帮助。单一职责原则(Single Res...原创 2020-01-23 11:54:05 · 324 阅读 · 0 评论 -
一文看懂Android中的序列化
序列化,刚入门的开发者可能从字面上看不出这个到底是啥意思,这比较妨碍我们的理解。所以我们需要铭记其定义和作用。定义:Java序列化就是指把Java对象转换为字节序列的过程Java反序列化就是指把字节序列恢复为Java对象的过程。作用:对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。通过序列化可以在进程间传递对象。从序列化的作用中我们可以看到字节流有利于网络传输或者存...原创 2020-01-18 23:17:16 · 525 阅读 · 0 评论 -
android系统tts TextToSpeech源码原理解析及定制tts引擎
TextToSpeech 即文字转语音服务,是Android系统提供的原生接口服务,原生的tts引擎应用通过检测系统语言,用户可以下载对应语言的资源文件,达到播报指定语音的文字的能力。但是一切都是在google service的环境下的,在国内使用的Android设备中谷歌服务都是禁用的,而国内最主要的也是需要中文的文字播报能力,那如何实现呢。TextToSpeech源码解析首先,我习惯读一下...原创 2020-01-11 13:06:36 · 4131 阅读 · 1 评论 -
java.util.ConcurrentModificationException问题原因
今天收到一个bug,查了好久,才找到java.util.ConcurrentModificationException这个异常。归根结底就是多线程问题, 多线程使用时不允许修改,解决方案就是对象加锁。报错的地方显示01-07 11:13:15.590 3526 3539 E JavaBinder: at java.util.HashMap$HashIterator.next...原创 2020-01-08 10:32:48 · 428 阅读 · 0 评论 -
如何查看Android系统源码
Android系统源码是很好的学习系统架构设计,查找问题的最佳工具。 网上流传的talk is cheap, show me the code, 或者Show me the fucking code.说明了源码的重要性,而作为Android系统基础的系统源码则是最值得看的源码了,对我们学习谷歌开发大牛的架构设计,提高我们的开发水平也有很多帮助。目前我经历过的几种查看源码的方式:Androi...原创 2020-01-03 17:14:11 · 4081 阅读 · 1 评论 -
Handler通信机制源码解读
工作中,我们可能直接使用我们需要的工具方法,但是不曾了解其中的原理内涵,这样并不能很好的让我们理解其运行机制,在复杂项目和疑难问题时无从入手。作为开发想要提高并设计架构,一是要先学习优秀的设计理念,再就是了解其内部原理,为自己在复杂使用场景和发生疑难问题时能够透过表象看到本质。Handler,Message,looper 和 MessageQueue 构成了安卓的消息机制,handler创建后...原创 2020-01-03 14:41:37 · 398 阅读 · 0 评论